共计 1149 个字符,预计需要花费 3 分钟才能阅读完成。
STM32F1 系列
程序中在使用到 JTAG、SWD 的某个 IO 时,需要禁用掉相关调试方法后,再配置相应的 IO 方式。在需要相应的接口配置前使用这些代码。
对于 F1 系列,调用函数进行专门的禁止。
标准库配置方式:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
HAI 库配置方式:
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_AFIO_REMAP_SWJ_DISABLE();
__HAL_AFIO_REMAP_SWJ_NOJTAG();
在禁用掉相应的接口方式后,即不能再使用这种方式下载程序了。因此会出现报错:“”RAM check failed at :“”或者“NO M-Cortex”.
遇到这个状况,需要再次下载程序,有如下三种办法:
- 如果只禁用的 JTAG,可以用 SWD 模式下载程序进去。
否则只能后续两种,但总体思路都是先不让代码运行起来,不去禁用 JTAG 及 SWD,这时候下载程序。
- 采用人工复位,按钮或短接。在程序下载进行到复位的这一步,完成复位动作。
- 修改启动模式:拉高 BOOT0-> 重新上电 -> 程序不能运行 -> 下载程序 -> 拉低 BOOT0-> 重新上电 -> 程序正常运行。
STM32F4 系列
对于 F4 系列,系统上电后,所有引脚都是 AF0 复用,F4 系统共支持 AF0-AF15 种复用。
具体到每种复用,查看数据手册就行,比如这个:
对于 F4 系列,没有专门的禁止函数了,用户只要不是将这几个调试引脚配置成默认的 AF0 复用即可。
因为系统上电,这几个引脚默认是配置成 AF0 复用,且用于 JTAG/SW 调试模式。
● PA15:JTDI 处于上拉状态
● PA14:JTCK/SWCLK 处于下拉状态
● PA13:JTMS/SWDAT 处于下拉状态
● PB4:NJTRST 处于上拉状态
● PB3:JTDO 处于浮空状态
用户要使用这些引脚做通用 IO,只要不配置复用模式即可 (GPIO_Mode_AF),配置成输入或者输出就行
GPIO_Mode_IN = 0x00,
GPIO_Mode_OUT = 0x01,
GPIO_Mode_AF = 0x02,
GPIO_Mode_AN = 0x03
STM32L151 系列
类似 STM32F4 系列
原文地址: STM32F1,F4,L1 系列禁止 JTAG 和 SW 引脚方法