前言
在STM32中有一些引脚的主功能不是实现GPIO的功能,而是用作调试接口。就比如我们常用的ST-LINK下载器,就是通过SWD接口给STM32下载程序的。SWJ接口包括SWD和JTAG两种。
环境
- STM32F103C6T6核心板
- STM32CubeMX生成的HAL库文件
基础
SWJ接口(F103为例)
-
串行线调试接口(SWD)
- SWDIO:SWD端口的数据线(PA13)。
- SWCLK:SWD端口的时钟线(PA14)。
- SWO:串行线输出(PA3)。
-
JTAG接口
- TMS引脚(PA13)
- TCK引脚(PA14)
- TDO引脚(PA15)
串口下载:
-
BOOT模式
boot0 --> 1 boot1 --> 0
-
串口接线
TTL_RX --> PA9(TX) TTL_TX --> PA10(RX)
代码
调用下列代码后,在初始化引脚就能把上述的SWJ接口的引脚,当GPIO使用。但是也会失去用ST-LINK调试下载的功能,得要生成hex文件,和切换boot的模式后,用串口一下载程序。在HAL库中好像只能把JTAG-DP和SW-DP都给禁止调,而不能单独禁止一个。
// 禁用JTAG-DP和SW-DP
__HAL_AFIO_REMAP_SWJ_DISABLE();
// 将JTDI功能映射到PB4引脚
//__HAL_AFIO_REMAP_JTDI_ENABLE();