本案例是串联和并联的综合应用,LED灯 ( D1 ) 与有源蜂鸣器 ( FM ) 并联连接然后再与开关 ( S1 ) 和电池 ( P1 ) 串联连接,当开关闭合时,LED灯和蜂鸣器同时工作,LED灯发光,蜂鸣器发声模拟莫斯密码发报机的情景。
注:蜂鸣器使用前必须撕开粘贴在其上方的标签,蜂鸣器和LED灯都需要区分极性,否则接入后电路不能正常工作。有源蜂鸣器可以通过长短脚来判断正负极,也可以撕掉表面标签,通过“+”号位置进行判断。
1、首先写出主函数,初始化各个硬件设备参数。
2、其次调用设置闹钟值的函数(RTC_Alarm_Set(2021,1,13,16,39,59);)。
3、最后在闹钟中断中增加蜂鸣器启动代码,编译完成后即可运行。
1.beep.h文件中写入
//蜂鸣器端口定义
void BEEP_Init(void); //初始化
2.beep.c文件中写入
//初始化 PB8 为输出口.并使能这个口的时钟
//LED IO 初始化
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //结构体指针
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//使能 GPIOB 端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //BEEP--GPIOB.8 端口配置
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,关闭蜂鸣器输出
}
main主函数里面写入
//ALIENTEK 精英 STM32 开发板实验 2
//蜂鸣器实验
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //初始化与 LED 连接的硬件接口ALIENTEK 精英 STM32F103 V1 开发板教程
BEEP_Init(); //初始化蜂鸣器端口
while(1)
{
LED0=0; //位操作,LED0为低电平
BEEP=0; //位操作,BEEP为低电平
delay_ms(300); //延时300毫秒
LED0=1;
BEEP=1;
delay_ms(300);
}
}
题主是否想询问“stm32控制蜂鸣器5秒响一次吗”?是。stm32蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件,可控制蜂鸣器5秒响一次。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
如果不加延时,IO拉低后马上就被拉高了,考虑到STM32的速度,这个时间1us不到。对应蜂鸣器只通电1us,这点时间蜂鸣器都还没工作起来。