由于需要用到B3 B5,发现这几个端口是用来给JTAG和SWD下载用的端口,所以在使用这些端口的时候,需要关闭JTAG和SWFD,在复用这几个端口

void BEEP_GPIO_init(void) {
GPIO_InitTypeDef GPIO_InitStruct;//定义指针变量
//下面这三个就是关闭SWJ等相关复用
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//时钟初始
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );
GPIO_InitStruct.GPIO_Mode =GPIO_Mode_Out_PP;//IO初始化 //注意这里依旧是普通输出,而不是中文手册中的复用输出
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_3;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
BEEP = 1; //关闭BEEP

}

//注意: 上面的函数在主程序中被初始化后,其他在使用B3 B4 A13 A14 A15就不需要在重新关闭SWJ了,但是需要在main中先把BEEP_GPIO_init();调用了

void main(){
BEEP_GPIO_init();
BEEP=0; //打开蜂鸣器
//下面继续其他GPIO初始化
}