蓝桥杯嵌入式CT117E硬件开发平台 | 蜂鸣器操作
关于蜂鸣器操作,基本上就是控制蜂鸣器连接的三极管是高电平导通还是低电平导通的问题,本次使用的开发板为PNP三极管,低电平导通,只需将三极管连接的GPIO赋值为低电平就可以控制蜂鸣器工作。但是注意的是由于蜂鸣器对应的三极管基极接到的是PB4,JTAG工作口,所以需要重映射一下。具体代码实现如下所示:
****** 注:
CT117E V1.0版本
调试程序前,需将PB4-Buzzer跳线(蓝色)取下,待程序调试结束后,
再接好跳线。
PB4引脚上电默认为JTAG-RST引脚。
CT117E V1.1版本 -----本次使用的版本
注意事项: 下载本程序后,将JTAG引脚重映射的普通IO功能,可能使得
下载功能失效,恢复的方法是:
1.按住板子上的RESET按键
2.点击REALVIEW MDK软件上的DOWNLOAD按钮
3.直到此时,松开板子上的复位按键,自动完成程序下载
下载功能恢复后,以后再下载代码则不需要此过程。当然,若是驱动蜂鸣器,则还需要按照此方法重新下载。
* 日期版本:2020-10-16 V1.0
*******************************************************************************/
void BUZ_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
* typedef enum{
OFF = 0,
ON = 1,
REVERSE = 2
}STATE_ENUM;
*/
void BUZ_Control(STATE_ENUM BUZ_Status)
{
uint8_t BUZ_Buff=0x00;
if(BUZ_Status == OFF){
GPIO_SetBits(GPIOB,GPIO_Pin_4);
}
else if(BUZ_Status == ON){
GPIO_ResetBits(GPIOB,GPIO_Pin_4);
}
else
{
BUZ_Buff = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4);
if(BUZ_Buff == Bit_RESET)
{
GPIO_SetBits(GPIOB,GPIO_Pin_4);
}
else{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);
}
}
}