蓝桥杯嵌入式——蜂鸣器

蓝桥杯嵌入式——蜂鸣器

做者:张阿永              QQ:793805481web

       蓝桥杯嵌入式开发板的蜂鸣器接的引脚是PB4,这个引脚同时也是链接在JTAG接口的JNTRST引脚。
Pin definitions
       当咱们stm32复位后,PB4引脚默认是做为JTAG接口的JNTRST引脚,所以 咱们在使用蜂鸣器以前要先把PB4复用回咱们的普通IO口。svg

所以须要咱们添加这条语句函数

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); //PB4 重映射

注意:不要忘记开启AFIO时钟spa

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

而后就能释放PB4了。 code

以后,蜂鸣器就能够像LED同样进行初始化步骤和操做,此处再也不赘述。
代码以下:xml

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);
   }
}

补充: blog

1、将JTAG引脚重映射的普通IO功能, 可能使得下载功能失效 恢复的方法以下:
        1.按住板子上的RESET按键
        2.点击REALVIEW MDK软件上的DOWNLOAD按钮
        3.直到此时,松开板子上的复位按键,自动完成程序下载
        下载功能恢复后,之后再下载代码则不须要此过程。token

2、蜂鸣器工做原理:原理图
      因为蜂鸣器的驱动电流比较大,可是STM32串口的输出电流达不到,因此这里加了一个三极管用于电流放大。关于三极管的知识,此处也再也不赘述。因此,当PB4输出低电平时,三极管导通,蜂鸣器工做;当PB4输出高电平时,三极管截至,蜂鸣器不工做。接口

                                                                                                                                                                                                                                                                                                                                                                                                
完!
欢迎你们私信提问!
ip