zoukankan      html  css  js  c++  java
  • 嵌入式02 STM32 实验05 蜂鸣器

    蜂鸣器:是一种一体化结构的电子讯响器。主要分为分压式蜂鸣器电磁式蜂鸣器两种类型。

    一、有源/无源蜂鸣器(不是指是否带电源,而是有没有自带震荡电路

      1、有源蜂鸣器:有源蜂鸣器自带震荡电路,一通电就会发声。

      2、无源蜂鸣器:没有自带震荡电路,需要外部提供2~5Khz左右的方波驱动,太能发声。

    二、硬件设计

      因为STM32的单个IO口最大可以提供25mA电流,而蜂鸣器的驱动电流在30mA左右,两者十分相近,但是STM32整个芯片的电流,最大也就150mA左右,如果用IO口直接驱动蜂鸣器,其它功能使用时可能出现电流不足。所以我们通过三极管(S8050)括流后再驱动蜂鸣器,这样STM32的IO口只需要提供不到1mA的电流就足够了。

      R33主要用于防止蜂鸣器的误发声PB.8 输出高电平的时候,蜂鸣器将发声, 当 PB.8 输出低电平的时候,蜂鸣器停止发声

      

    三、软件设计

     1 //子函数
     2 #include "beep.h"
     3 #include "stm32f10x.h"
     4 
     5 
     6 void BEEP_Init(void)
     7 {
     8     GPIO_InitTypeDef GPIO_BEEP;                //创建一个结构体
     9 
    10     GPIO_BEEP.GPIO_Mode = GPIO_Mode_Out_PP;    //设置该端口为推挽输出 
    11     GPIO_BEEP.GPIO_Pin = GPIO_Pin_8;           //PB.8端口                     
    12     GPIO_BEEP.GPIO_Speed = GPIO_Speed_50MHz;   //50MHz
    13     
    14     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);    //初始化GPIOB时钟
    15     
    16     GPIO_Init(GPIOB, &GPIO_BEEP);             //根据参数初始化GPIO.8 
    17 }

    主函数

     1 #include "sys.h"
     2 #include "delay.h"
     3 #include "beep.h"
     4 
     5 int main(void)
     6 {
     7     BEEP_Init();      //蜂鸣器初始化   
     8     delay_init();     //延时函数初始化
     9     while(1)
    10     {
    11         GPIO_ResetBits(GPIOB, GPIO_Pin_8);      //关闭蜂鸣器
    12         delay_ms(1500);                            //延时1.5秒
    13         
    14         GPIO_SetBits(GPIOB, GPIO_Pin_8);        //打开蜂鸣器
    15         delay_ms(100);                            //延时0.1秒
    16     }
    17 }
  • 相关阅读:
    rem 适配
    1px实现方案
    伪类选择器
    css中如何做到容器按比例缩放
    rem移动端适配方案
    Quartz.NET实现作业调度
    iPhone X
    优化hexo访问速度-将hexo部署到云主机VPS
    网页设计命名规范
    网站注册页面
  • 原文地址:https://www.cnblogs.com/ksht-wdyx/p/11600351.html
Copyright © 2011-2022 走看看