蓝桥杯嵌入式蜂鸣器模块和下载程序失败对应的解决方案
蜂鸣器的初始化问题
在提供的使用手册里我们可以看到PB4对应的是蜂鸣器,但是在STM32提供的资料STM32_CN.pdf中,我们可以看到PB4与SWJ的JNTRST存在复用,所以我们要吧JNRST关掉,才可以使用蜂鸣器模块。
buzz.c
#include "buzz.h"
void Buzz_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//这个就是很重要的你可以理解为,不用JTRST
//GPIO_PinRemapConfig这个函数在stm32f10x_gpio.h中
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
}
buzz.h
#ifndef __BUZZ_H
#define __BUZZ_H
#include "stm32f10x.h"
#define Beep_On() GPIO_ResetBits(GPIOB,GPIO_Pin_4)
#define Beep_Off() GPIO_SetBits(GPIOB,GPIO_Pin_4)
void Buzz_init(void);
#endif
后面在main函数中,直接调用Beep_On();函数就可以响了。
下载程序失败对应的解决方案
如果使用了蜂鸣器模块或者某些特殊情况下,可能会存在程序下载不进去板子的情况。这是因为你前面把SWJ的JTRST给关掉了,因此会导致下载不进去。因此你需要先按着板子的复位键(RESET),然后点下载,然后紧接着迅速松开复位键,然后就可以下载进去了!