1.PB3/PB4/PA13/PA14/PA15引脚默认功能参照
PB3-----------------JTDO
PB4-----------------JNTRST
PA13-----------------JTMS
PA14-----------------JTCK
PB15-----------------JTDI
2.这是STM32官方库的宏定义
/// 可使用PB4
#define GPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /*SWD使能、JTAG使能但是不包括JNRST引脚 */
/// 可使用PB15,PB3,PB4
#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) /*SWD使能、JTAG失能 */
/// 可使用PA13,PA14,PB15,PB3,PB4
#define GPIO_Remap_SWJ_Disable ((uint32_t)0x00300400) /*SWD与JTAG全部失能 */
3.标准库配置:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE); //使能相应接口的时钟,以及RCC_APB2Periph_AFIO
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//完全禁用SWD及JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁用JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,DISABLE); //使用JTAG
HAI库配置方式:
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE(); //
__HAL_RCC_GPIOF_CLK_ENABLE(); //
/* JTAG-DP Disabled and SW-DP Disabled */
__HAL_AFIO_REMAP_SWJ_DISABLE(); //完全禁用SWD及JTAG
__HAL_AFIO_REMAP_SWJ_NOJTAG(); //禁用JTAG
4.需要注意:禁用前必须要使能对应接口的时钟和RCC_APB2Periph_AFIO复用时钟
产生的副作用
在禁用掉相应的接口方式后,即不能再使用这种方式下载程序了。因此会出现很多人遇到的:“”RAM check failed at :“”或者“NO M-Cortex”.
遇到这个状况,需要再次下载程序,有如下三种办法:
如果只禁用的JTAG,可以用SWD模式下载程序进去。
否则只能后续两种,但总体思路都是不认让代码运行起来,不去禁用JTAG及SWD,这时候下载程序。
采用人工复位,按钮或短接。在程序下载进行到复位的这一步,完成复位动作。短路复位电容,点下载,稍等几秒(这个靠感觉喽),断开短路的电容,OK!大功告成!这是因为复位的时候,禁止JTAG的寄存器也是复位状态,所以JTAG就自动启动,未被禁止。在系统复位的时候默认是开启JTAG与swd的,在点击下载后的2秒内按下复位键即可将程序下载进stm32。文章来源:https://www.toymoban.com/news/detail-806547.html
拉高BOOT0->重新上电->程序不能运行->下载程序-> 拉低BOOT0->重新上电->程序正常运行
文章来源地址https://www.toymoban.com/news/detail-806547.html
到了这里,关于STM32 使用调试引脚 PB3,PB4 P15 方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!