作者:张阿永 QQ:793805481
蓝桥杯嵌入式开发板的蜂鸣器接的引脚是PB4,这个引脚同时也是连接在JTAG接口的JNTRST引脚。
当我们stm32复位后,PB4引脚默认是作为JTAG接口的JNTRST引脚,因此 我们在使用蜂鸣器之前要先把PB4复用回我们的普通IO口。
因此需要我们添加这条语句:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); //PB4 重映射
注意:不要忘记开启AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
然后就能释放PB4了。
之后,蜂鸣器就可以像LED一样进行初始化步骤和操作,此处不再赘述。
代码如下:
void BEEP_Init(void)//初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); //PB4 重映射
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void BEEP_Control(u8 state)//蜂鸣器控制函数 0→响
{
if(state==0)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);
}
if(state==1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_4);
}
}
补充:
一、将JTAG引脚重映射的普通IO功能, 可能使得下载功能失效 ,恢复的方法如下:
1.按住板子上的RESET按键
2.点击REALVIEW MDK软件上的DOWNLOAD按钮
3.直到此时,松开板子上的复位按键,自动完成程序下载
下载功能恢复后,以后再下载代码则不需要此过程。
二、蜂鸣器工作原理:
由于蜂鸣器的驱动电流比较大,但是STM32串口的输出电流达不到,所以这里加了一个三极管用于电流放大。关于三极管的知识,此处也不再赘述。所以,当PB4输出低电平时,三极管导通,蜂鸣器工作;当PB4输出高电平时,三极管截至,蜂鸣器不工作。
完!
欢迎大家私信提问!