蜂鸣器实验

2020-01-27  本文已影响0人  BIGBEN_43da

1. 蜂鸣器硬件设计

PB8 口输出。IO口的电流很小,不足以直接驱动BEEP发出声音,所以要接三极管发大电路,将电流发大。(IO口接继电器也一样,需要接三极管)。三极管的β系数就是电流的发大倍数。

R38 10K电阻的作用: GPIO口为悬空状态,如果没有R38,IO口可能会有电压,经过三极管后被发大,导致蜂鸣器发出响声

2. 实验步骤

\ast   使能IO时钟  调用函数RCC_APB2PeriphClockCmd();

\ast 初始化IO模式。   调用BEEP_Init();

\star 操作IO口,输出高低电平

3. 具体实现

1) BEEP.C  添加到HARDWARE文件夹下

void BEEP_Init(void)

{

GPIO_InitTypeDef  GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //BEEP-->PB.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,关闭蜂鸣器输出

}

注意事项:RCC_APB2PeriphClockCmd  为什么是APB2 可追查头文件,APB1一般包括time,串口等,APB2包括了IO口的时钟

2)main.c文件  添加到user文件夹下

int main(void)

{

delay_init();     //延时函数初始化  

LED_Init();   //初始化与LED连接的硬件接口

BEEP_Init();        //初始化蜂鸣器端口

while(1)

{

LED0=0;

BEEP=0;  

delay_ms(300);//延时300ms

LED0=1;  

BEEP=1; 

delay_ms(300);//延时300ms

}

}

注意点:BEEP=0 中的beep是位操作,在BEEP.H中定义,改语句也可以用库函数语句表达

              GPIO_Resetbits(GPIOB,GPIO_Pin_8);

上一篇 下一篇

猜你喜欢

热点阅读