STM32学习之 蜂鸣器

打印 上一主题 下一主题

主题 993|帖子 993|积分 2979

STM32学习之 蜂鸣器
芯片型号:STM32F103C8T6
   蜂鸣器是一种一体化布局的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子装备、电话机、定时器等电子产物中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型:
有源不是指电源的“源”,而是指有没有自带震荡电路,
有源蜂鸣器自带了震荡电路,一通电就会发声;
无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动,才能发声
  

   STM32的单个 IO 最大可以提供 25mA 电流,而蜂鸣器的驱动电流是 30mA 左右,两者十分相近,但是全盘考虑,STM32整个芯片的电流,最大也就 150mA,假如用 IO 口直接驱动蜂鸣器,其他地方用电就得省着点了…
所以,我们不用 STM32 的 IO直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,如许 STM32 的 IO 只必要提供不到 1mA 的电流就足够了。
IO口使用虽然简朴,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就越可靠,可能出现的问题也就越少。

不要接这三个端口,这是JTAG调试端口,必要额外一些配置

  接的是B12:

代码如下:
  1. #include "stm32f10x.h"                  // Device header
  2. #include "Delay.h"
  3. int main(void)
  4. {
  5.         /*开启时钟*/
  6.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);        //开启GPIOB的时钟
  7.                                                                                                                         //使用各个外设前必须开启时钟,否则对外设的操作无效
  8.        
  9.         /*GPIO初始化*/
  10.         GPIO_InitTypeDef GPIO_InitStructure;                                        //定义结构体变量
  11.        
  12.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                //GPIO模式,赋值为推挽输出模式
  13.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;                                //GPIO引脚,赋值为第12号引脚
  14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //GPIO速度,赋值为50MHz
  15.        
  16.         GPIO_Init(GPIOB, &GPIO_InitStructure);                                        //将赋值后的构体变量传递给GPIO_Init函数
  17.                                                                                                                         //函数内部会自动根据结构体的参数配置相应寄存器
  18.                                                                                                                         //实现GPIOB的初始化
  19.        
  20.         /*主循环,循环体内的代码会一直循环执行*/
  21.         while (1)
  22.         {
  23.                 GPIO_ResetBits(GPIOB, GPIO_Pin_12);                //将PB12引脚设置为低电平,蜂鸣器鸣叫
  24.                 Delay_ms(100);                                                        //延时100ms
  25.                 GPIO_SetBits(GPIOB, GPIO_Pin_12);                //将PB12引脚设置为高电平,蜂鸣器停止
  26.                 Delay_ms(100);                                                        //延时100ms
  27.                 GPIO_ResetBits(GPIOB, GPIO_Pin_12);                //将PB12引脚设置为低电平,蜂鸣器鸣叫
  28.                 Delay_ms(100);                                                        //延时100ms
  29.                 GPIO_SetBits(GPIOB, GPIO_Pin_12);                //将PB12引脚设置为高电平,蜂鸣器停止
  30.                 Delay_ms(700);                                                        //延时700ms
  31.         }
  32. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表