本帖最后由 caijie001 于 2018-5-24 17:58 编辑
本章介绍STM8L051F3的BEEP相关知识。内容分为以下几部分:
1、BEEP简介STM8大部分型号都具备BEEP模块,STM8L系列也不例外。BEEP模块用于产生一个1/2/4KHz的的BEEP信号,BEEP的时钟可选择LSE或LSI(由CLK_CBEEPR寄存器的CLKBEEPSEL[1:0]位决定),BEEP模块的框图如下:

由上图可以看出BEEP的工作流程:选择时钟源(如选择LSI,可通过定时器校准)-->对时钟进行分频-->选择BEEP输出频率。
2、BEEP模块使用2.1 BEEP模块配置本小节介绍如何配置BEEP模块产生(1/2/4KHz)脉冲信号来驱动无源蜂鸣器,用户需要自备一个无源蜂鸣器模块。使用的例程:STM8L051F3_05_BEEP。BEEP模块的配置步骤如下(使用LSE时钟作为BEEP的时钟源):
1)打开LSE时钟并等待LSE稳定
2)使能BEEP外设时钟
3)配置BEEP外设时钟源为LSE
4)初始化BEEP(配置BEEP的频率)
2.2 例程介绍BEEP相关的配置都在主函数中实现,主函数代码如下:
void main(void)
{
LED_Init(); //初始化LED CLK_LSEConfig(CLK_LSE_ON); //打开LSE时钟 while(CLK_GetFlagStatus(CLK_FLAG_LSERDY)== RESET);//等待LSE稳定 CLK_PeripheralClockConfig(CLK_Peripheral_BEEP, ENABLE);//使能BEEP外设时钟 CLK_BEEPClockConfig(CLK_BEEPCLKSource_LSE);//配置BEEP的时钟源为LSE BEEP_Init(BEEP_Frequency_2KHz);//初始化BEEP频率为2KHz while(1) { BEEP_Cmd(ENABLE); //打开BEEP GPIO_ResetBits(LED1_GPIO_PORT, LED1_GPIO_PINS);//点亮LED1 delay_ms(300); BEEP_Cmd(DISABLE); //关闭BEEP GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PINS);//关闭LED1 delay_ms(300); } }
使用一个无源蜂鸣器模块,将信号引脚接到PA0口,使用ST-LINK把程序下载到开发板中,可以看到LED1闪烁,BEEP报警。注:BEEP使用的引脚与SWIM下载引脚是同一个,所以当接上蜂鸣器时,下载程序过程中,蜂鸣器会发出声音。
转载请说明出处
|