打印

【连载】STM8L051F3_05_BEEP应用

[复制链接]
1348|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caijie001|  楼主 | 2018-5-15 09:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 caijie001 于 2018-5-24 17:58 编辑

本章介绍STM8L051F3的BEEP相关知识。内容分为以下几部分:
  • BEEP简介
  • 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下载引脚是同一个,所以当接上蜂鸣器时,下载程序过程中,蜂鸣器会发出声音。
转载请说明出处

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:21ic公开课专区:http://open.21ic.com/ 21ic资料下载中心:http://dl.21ic.com/ 21ic项目外包中心:http://project.21ic.com/ 杰杰欢迎大家有空常来赛事专区逛逛

131

主题

3790

帖子

63

粉丝