zoukankan      html  css  js  c++  java
  • 蜂鸣器

    蜂鸣器是一种一体化结构的电子讯响器,採用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

    源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动,才干发声。

    STM32
    的单个 IO 最大能够提供 25mA 电流(来自数据手冊),而蜂鸣器的驱动电流是 30mA 左右,两者十分相近,可是全盘考虑,STM32 整个芯片的电流,最大也就 150mA,假设用 IO 口直接驱动蜂鸣器,其它地方用电就得省着点了…所以,我们不用 STM32 的 IO 直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样 STM32 的 IO 仅仅须要提供不到 1mA 的电流就足够了。

    蜂鸣器在硬件上也是直接连接好了的,不须要经过不论什么设置,直接编写代码就能够了。蜂鸣器的驱动信号连接在 STM32 的 PB8 上。

    void BEEP_Init(void)
    {
      GPIO_InitTypeDef  GPIO_InitStructure;
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOBport时钟
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //BEEP-->PB.8 port配置
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为50MHz
     GPIO_Init(GPIOB, &GPIO_InitStructure); //依据參数初始化GPIOB.8
      GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出0,关闭蜂鸣器输出
    }

    这段代码 仅包括 1 个函数:void BEEP_Init(void),该函数的作用就是使能 PORTB 的时钟,同一时候配置 PB8 为推挽输出。

    Program Size: Code=4592 RO-data=336 RW-data=52 ZI-data=1836  

    FromELF: creating hex file...

    这里我们解释一下,编译结果里面的几个数据的意义:
    Code:表示程序所占用 FLASH 的大小(FLASH)。
    RO-data:即 Read Only-data,表示程序定义的常量,如 const 类型(FLASH)。
    RW-data:即 Read Write-data,表示已被初始化的全局变量(SRAM)
    ZI-data:即 Zero Init-data,表示未被初始化的全局变量(SRAM)

    有了这个就能够知道你当前使用的 flash 和 sram 大小了,所以,一定要注意的是程序的大小不是.hex 文件的大小,而是编译后的 Code 和 RO-data 之和。

  • 相关阅读:
    “结束进程”和“结束进程树”有啥区别啊?
    为什么second是秒也是第二?
    java中System类
    记忆是如何形成的、又是如何存储在我们的大脑里的?
    真正支配整个世界的十种算法
    编写一个JAVA小程序取得IP地址
    windows下bat批处理执行sql语句__Mysql
    Windows批处理命令用法
    mysql 查看某个数据库中所有表的数据量
    truncate table时存在外键约束的解决办法
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4010900.html
Copyright © 2011-2022 走看看