藍橋杯嵌入式基礎板模塊之蜂鳴器模塊和下載程序失敗解決方案

藍橋杯嵌入式蜂鳴器模塊和下載程序失敗對應的解決方案

蜂鳴器的初始化問題

在提供的使用手冊裏我們可以看到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),然後點下載,然後緊接着迅速鬆開復位鍵,然後就可以下載進去了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章