入门练习项目:使用GPIO输出模式控制无源蜂鸣器,按照指定频率和持续时间发声,根据音谱完成两只老虎的歌曲。

1.使用cubemx配置PB9为推挽输出模式,选择RCC时钟为外部高速时种;由于采用ST_Link下载所以选择Debug为SW模式;再配置时钟树。

最后编辑工程保存路径,由于使用keil5_MDK编写代码所以选择MDK—ARM

再选择生成必要库文件,创建.c和.h文件;最后点击右上角GENERATE CODE即可生成工程

打开工程文件:

注意自己写的代码需要在用户代码区USER_BEGIN和USER_END中间编写,否则重新在cubemx生成代码时会覆盖用户代码

1.在MAIN.c文件下,合适位置处添加一个us延时函数(用于声音频率控制——HAL库自带的HAL_DELAY()函数为ms级延时)

2.再在刚才编写的us延时函数下编写频率输出控制函数,由于周期为us级别,所以需要扩大1000 000倍计算,想要得到输出指定频率的脉冲,则控制GPIO高低电平反转各持续半个周期,对于持续时间的判断,则在输出频率前的for循环加入判断条件,DUR同样需要扩大1000倍,才可单位匹配。只需要对指定频率的周期个数计数,和DUR比较即可完成时间控制。

3.最后在main函数的while处编写调用此BUZZER_ferq_Duty函数,按照音谱表即可完成功能。

效果展示—非专业,全中音频率播放


立创开发板

还没有评论,抢个沙发!