超声波雾化片DIY加湿器

2019-08-17 02:08发布

本人在一个帖子中看到用考毕兹振荡器驱动的超声波换能片,于是想到STM32F1的PWM功能来得到一个高频脉冲来驱动它。如果是一款工作电压24v、谐振频率为110khz的换能片,这样接合适吗
MOS管的栅极用PB8控制,那么我想问的是110khz的谐振频率用32怎么实现,我的想法如代码所示
[mw_shl_code=c,true]int main()
{
  GPIO_InitTypeDef GPIO_InitStructure;
        TIM_OCInitTypeDef TIM_OCInitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能或者失能APB2外设时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能或者失能APB1外设时钟
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最高输出速率50MHz
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
        GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化外设GPIOx寄存器
       
        TIM_TimeBaseStructure.TIM_Prescaler =21;//预分频值
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
        TIM_TimeBaseStructure.TIM_Period =20;//在下一个更新事件装入活动的自动重装载寄存器周期的值
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//TDTS = Tck_tim
        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化

        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//PWM模式1
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//使能
        TIM_OCInitStructure.TIM_Pulse = 0;//脉冲宽度,由这个设置占空比
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//高电平有效

        TIM_OC3Init(TIM4,&TIM_OCInitStructure);//初始化

  TIM_Cmd(TIM4, ENABLE);//使能或者失能TIMx外设
  while(1)
{
  TIM_SetCompare3(TIM4,10 );//设置TIMx捕获比较3寄存器值

}

}
[/mw_shl_code]
具体的我想问下分频系数、自动重装载值怎么算,还有就是TIM_SetCompare3(TIM4,10 )中的那个比较值怎么设定,不知道这种方法是否合适,如果合适的话请大神指导,不合适的话希望能有别的方法
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。