思路与跑马灯类似,还是通过位带操作来实现某个IO 口的输出控制, BEEP 就直接代表了 PB8 的输出状态。我们只需要令 BEEP=1 ,就可以让蜂鸣器发声。
直接上代码:
beep.c
#include "beep.h"
//初始化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->GPIO8端口配置
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,关闭蜂鸣器输出
}
beep.h
#define __BEEP_H
#include "sys.h"
//蜂鸣器定义
#define BEEP PBout(8) //BEEP,定义PB8口为蜂鸣器接口
void BEEP_Init(void); //初始化函数
#endif
main.c
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //初始化与LED连接的硬件接口
BEEP_Init(); //初始化蜂鸣器端口
while(1)
{
LED0=0;
BEEP=0;
delay_ms(1000);
LED0=1;
BEEP=1;
delay_ms(1000);
}
}
最新评论