1.了解蜂鸣器:
- 蜂鸣器在使用3.3V无法驱动,需要借助到三极管的放大特性(Ic=βIb)将蜂鸣器驱动;
- 本次原理图中,接R33电阻是因为当STM32单片机复位时处于浮空状态,防止小电流让蜂鸣器响而添加的。
2.蜂鸣器原理图:
3.库函数实现蜂鸣器响:
(1)主函数:
#include "beep.h"
#include "delay.h"
int main(){
delay_init(); //延时初始化
BEEP_Init(); //初始化蜂鸣器
while(1){
delay_ms(100);
GPIO_SetBits(GPIOB,GPIO_Pin_8); //响,
delay_ms(100);
GPIO_ResetBits(GPIOB,GPIO_Pin_8); //不响,
}
}
(2)蜂鸣器头文件:
#ifndef __BEEP_H
#define __BEEP_H
void BEEP_Init(void);
#endif
(3)蜂鸣器功能函数:
#include "stm32f10x.h"
#include "beep.h"
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
//1.使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//2.配置io->PB8
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8; //PB8
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_ResetBits(GPIOB,GPIO_Pin_8); //不响,看原理图可知高电平驱动蜂鸣器响
}