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);

}

}

相关推荐
唯创知音1 小时前
智能血糖仪语音提示播报-高品质音质WT2003H芯片方案
人工智能·单片机·语音识别
skeete4 小时前
嵌入式八股,为什么单片机中不使用malloc函数
单片机·嵌入式硬件
禾川兴 1324240068811 小时前
国产芯片替代方案:解析沁恒以太网控制器芯片,内置MAC地址
单片机·嵌入式硬件·macos·桥接模式
美好的事情总会发生14 小时前
PECL(Positive Emitter-Coupled Logic)电平详解
嵌入式硬件·硬件工程·智能硬件
学工科的皮皮志^_^18 小时前
单片机ADC+NTC温度采集电路学习
经验分享·笔记·单片机·嵌入式硬件·学习
c-u-r-ry3018 小时前
012---状态机的基本知识
开发语言·嵌入式硬件·fpga开发
马浩同学18 小时前
【ESP32】ESP-IDF开发 | 经典蓝牙开发 | 蓝牙串口协议(SPP) + 客户端和服务端例程
c语言·单片机·嵌入式硬件·mcu·物联网·iot
美好的事情总会发生19 小时前
LVCMOS(Low Voltage Complementary Metal-Oxide-Semiconductor)电平详解
嵌入式硬件·硬件工程·智能硬件
绿算技术20 小时前
MCU详解:嵌入式系统的“智慧之心”
单片机·嵌入式硬件
Ch_Jany1 天前
C51 Proteus仿真实验17:数码管显示4×4键盘矩阵按键
单片机·51单片机·proteus