32单片机——BEEP

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、 复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型,STM32F103智能火龙STM32开发板板载的蜂鸣器是电磁式的有源蜂鸣器

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

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

代码

蜂鸣器每隔300ms响或者停一次,LED0每隔300ms亮或者灭一次,LED0亮的时候蜂鸣器不叫,而LED0熄灭的时候,蜂鸣器叫

led.h

#ifndef _LED_H

#define _LED_H

//led初始化

void led_init(void);

#endif

led.c

#include "./BSP/LED/led.h"

#include "./SYSTEM/sys/sys.h"

//led初始化

void led_init(void){

GPIO_InitTypeDef g_gppio_struct;

__HAL_RCC_GPIOB_CLK_ENABLE(); //使能时钟--PB5

g_gppio_struct.Pin=GPIO_PIN_5;

g_gppio_struct.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出

g_gppio_struct.Pull=GPIO_NOPULL; //无上下拉

g_gppio_struct.Speed=GPIO_SPEED_FREQ_HIGH; //高速

HAL_GPIO_Init(GPIOB,&g_gppio_struct); //初始化LED0

}

beep.h

#ifndef _BEEP_H

#define _BEEP_H

#include "./SYSTEM/sys/sys.h"

//beep初始化

void beep_init(void);

void set_beep(uint8_t flag);

#endif

beep.c

#include "./BSP/BEEP/beep.h"

//beep初始化

void beep_init(void){

GPIO_InitTypeDef g_gppio_struct;

__HAL_RCC_GPIOB_CLK_ENABLE(); //使能beepIO口时钟

g_gppio_struct.Pin=GPIO_PIN_8; //引脚号

g_gppio_struct.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出

g_gppio_struct.Pull=GPIO_NOPULL; //没有上下拉

g_gppio_struct.Speed=GPIO_SPEED_FREQ_HIGH; //高速

HAL_GPIO_Init(GPIOB,&g_gppio_struct);

}

void set_beep(uint8_t flag){

if(flag){

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);

}else{

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);

}

}

main.c

#include "./SYSTEM/sys/sys.h"

#include "./SYSTEM/delay/delay.h"

#include "./BSP/LED/led.h"

#include "./BSP/BEEP/beep.h"

int main(void){

HAL_Init();

sys_stm32_clock_init(RCC_PLL_MUL9);

delay_init(72);

led_init();

beep_init();

while(1){

set_beep(1);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); //熄灭

HAL_Delay(2000);

set_beep(0);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET); //点亮

HAL_Delay(2000);

}

}

相关推荐
anew___1 小时前
GPIO 输入输出——按键、LED 与蜂鸣器
单片机·嵌入式硬件
xu_wenming6 小时前
嵌入式软件架构中的6种解耦艺术
c语言·驱动开发·嵌入式硬件·架构
sramdram6 小时前
国产32位mcu微控制器高速风筒方案
单片机·嵌入式硬件·32位mcu·mcu微控制器·国产32位mcu
单片机仿真设计6 小时前
【proteus仿真】基于STM32单片机直流电机控制设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
天空'之城6 小时前
单片机基础核心知识点汇总(十八)
单片机·嵌入式硬件
736c7 小时前
STM32-看门狗 10
stm32·单片机
luiyarch7 小时前
汽车电子ISO 26262功能安全系列(第17期):系统集成与测试——验证系统级安全机制
嵌入式硬件·安全·车载系统·汽车
DevHub10 小时前
CANopen 教程:STM32 实现 CANopen 从站,3 个回调替代手写对象字典
c语言·驱动开发·stm32·单片机·嵌入式硬件·mcu
单片机仿真设计12 小时前
【proteus仿真】基于 STM32 农业大棚巡检小车 (仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
Hello_Damon_Nikola14 小时前
AiP9M161个人护理产品方案从设计到实现
单片机·嵌入式硬件