蜂鸣器原理图
由上图可知,蜂鸣器受管脚PA11控制;
PWM
PWM(脉冲宽度调制)是通过对一系列脉冲的宽度进行调制,输出所要的波形(包含形状以及幅值)。
(1)频率:是指1秒内高低电平周期性出现的次数;
(2)占空比:是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比。
管脚配置
由图可知,蜂鸣器所连接的管脚PA11可以做为TIM1_CH4使用,要让蜂鸣器工作只需要配置使能TIM1定时器的CH4通道输出PWM即可;
配置使能TIM1,让Channel4输出PWM,PA11管脚就被设置成TIM1_CH4功能模式了;
因为PWM会输出高低电平,防止其误发声音,设置GPIO下拉以防误发声音
设置频率、占空比
生成代码
在tim.c文件中添加蜂鸣器操作函数,其中times为蜂鸣器响几次,interval为蜂鸣器响、停的时间
/*添加蜂鸣器操作函数beep_start()实现,其中times为蜂鸣器响几次,interval为响、停的时间间�?????*/
void beep_start(uint8_t times,uint16_t interval)
{
while(times--)
{
//start buzzer//
if(HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_4)!=HAL_OK)
{
Error_Handler();
}
HAL_Delay(interval);
//stop buzzer//
if(HAL_TIM_PWM_Stop(&htim1,TIM_CHANNEL_4)!=HAL_OK)
{
//starting error//
Error_Handler();
}
HAL_Delay(interval);
}
}
在tim.h文件中添加蜂鸣器操作函数的声明
main.c文件中添加操作函数
/*USER CORE BEGIN WHILE*/
beep_start(2,300);
......
/*USER CORE END WHILE*/
运行测试后可听到蜂鸣器响两次