3、蜂鸣器实验
作者:互联网
蜂鸣器滴滴实验
文章目录
1 实验要求
通过控制IO口输出电平使蜂鸣器发出滴滴的声。
2 硬件介绍
蜂鸣器通电可以发出响声,可以应用于很多电子设备中给其操作者一个提醒。
本次实验采用的是正点原子精英开发板,板载的蜂鸣器是一个电磁式有源蜂鸣器。有源是指自带了振荡电路,可以直接通电发声;无源则不带振荡电路,需要方波驱动才能发声。
由于IO口最大提供25mA的电流,驱动蜂鸣器需要30mA,费点劲,所以需要三极管扩流之后再驱动蜂鸣器,这时只需要不到1mA电流就够了。蜂鸣器驱动信号连接到了STM32PB8上,原理图如下:
3 软件设计
3.1 新建工程
本实验会用到LED,所以可以直接复制LED的工程文件夹,命名为3、蜂鸣器,进入文件夹在HARDWARE文件夹中新建BEEP文件夹,文件夹中新建beep.h和beep.c两个文件,最后把LED.uvprojx重命名为beep.uvprojx,双击打开即可。
3.2 写代码
-
把beep.c文件添加到工程
双击HARDWARE组,找到刚刚创建的beep.c文件
-
把beep.h的路径加入到工程
-
在beep.c中引用beep.h编译一下,beep.h就加入进来了
-
beep.h,beep.c和main.c程序如下:
beep.h
#ifndef __BEEP_H
#define __BEEP_H
#include "stm32f10x.h"
//定义蜂鸣器端口、引脚和时钟,对应PB8
#define BEEP_PIN GPIO_Pin_8
#define BEEP_PORT GPIOB
#define BEEP_CLK RCC_APB2Periph_GPIOB
//BEEP(ON/OFF)控制蜂鸣器开关
#define ON 1
#define OFF 0
#define BEEP(x) if (x) GPIO_SetBits(BEEP_PORT,BEEP_PIN);\
else GPIO_ResetBits( BEEP_PORT,BEEP_PIN);
//声明蜂鸣器初始化函数
void BEEP_Init(void);
#endif
beep.c
#include "beep.h"
void BEEP_Init(void)
{
//实例化配置GPIO模式和速度结构体
GPIO_InitTypeDef GPIO_InitStruct;
//使能蜂鸣器时钟
RCC_APB2PeriphClockCmd(BEEP_CLK, ENABLE );
//配置端口输出并初始化
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin = BEEP_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init( BEEP_PORT, &GPIO_InitStruct);
//蜂鸣器初始化后不响
BEEP(0);
}
main.c
#include "stm32f10x.h"
#include "led.h"
#include "beep.h"
void Delay( uint32_t count)
{
for(;count!=0;count--);
}
int main()
{
//调用灯和蜂鸣器初始化函数
LED_Init();
BEEP_Init();
//LED0亮蜂鸣器就响
while(1)
{
LED0(1);
LED1(0);
BEEP(1);
Delay(0xFFFFF);
LED0(0);
LED1(1);
BEEP(0);
Delay(0xFFFFF);
}
}
然后就可以下载到单片机运行了,LED和蜂鸣器都是GPIO输出,下一个实验为按键检测,是GPIO的输入。
标签:beep,蜂鸣器,void,BEEP,实验,GPIO,define 来源: https://blog.csdn.net/asd22222984565/article/details/122860976