STM32F1的JTAG、SWJ作为普通IO引脚使用。禁用JTAG、SWJ。

本文详细介绍了STM32F1系列单片机中JTAG和SWJ引脚的默认功能及在实际应用中如何将它们转换为普通I/O口。主要涉及了三种重映射方法:全功能SWJ无JTRST、禁用JTAG启用SWJ以及完全禁用SWJ和JTAG,并提供了相应的配置代码示例。在进行重映射时,需要注意只能选择一种方法且必须开启AFIO时钟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32F1的JTAG、SWJ引脚,为 PA13/PA14/PA15/PB3/PB4。

单片机复位后,默认功能为 JTAG、SWJ。

而实际使用中,一般只使用 SWCLK、SWDIO这两个引脚做 Debug。其余的引脚可以空出来,重新定义为普通的 IO 来使用。

PA13/PA14/PA15/PB3/PB4 想要定义为 普通IO,需要进行一些额外的重定义配置。

1. 手册对JTAG、SWJ管脚的定义

 2. 引脚重映射分为以下几种情况

#define GPIO_Remap_SWJ_NoJTRST      ((uint32_t)0x00300100)  /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */
#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400)  /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */

(1)全功能 SWJ,JTAG没有JTRST。(PB4 可重映射为其他功能)

(2)禁用JTAG,启用SWJ。(PB3/PB4/PA15 可重映射为其他功能)

(3)完全禁用 SWJ和 JTAG。(PB3/PB4/PA13/PA14/PA15 均可重映射为其他功能)

SWJ、JTAG这些特殊引脚,只能使用以上3种重映射方法,不可对单独引脚重映射。

3. 配置代码

以最常用的配置方法为例:启用 SWJ,禁用 JTAG。(PB3/PB4/PA15 可重映射为其他功能)

	GPIO_InitTypeDef  GPIO_InitStructure;
	/* 禁用 JTAG,PB3、PB4重定义为普通IO */
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |  RCC_APB2Periph_AFIO, ENABLE);//使能PORTB口时钟、复用引脚PB3、PB4引脚
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭JTAG功能(PB3/4),只使用SWD(PA13/14)调试
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3;	//端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//IO口速度为50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure);					//根据设定参数初始化
	
	GPIO_ResetBits(GPIOB,GPIO_Pin_4);	//PB.4 输出低
	GPIO_ResetBits(GPIOB,GPIO_Pin_3);	//PB.3 输出低
 
	/* PA15重定义为普通IO */
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |  RCC_APB2Periph_AFIO, ENABLE);//使能PORTA口时钟、复用引脚PA15引脚
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;				//端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//IO口速度为50MHz
	GPIO_Init(GPIOA, &GPIO_InitStructure);					//根据设定参数初始化
	
	GPIO_ResetBits(GPIOA,GPIO_Pin_15);	//PA.15 输出低

注意事项:

(1)只能从 GPIO_Remap_SWJ_NoJTRST、GPIO_Remap_SWJ_JTAGDisable、GPIO_Remap_SWJ_Disable 这三种重定义方法中,挑选一种进行使用,不可对单独引脚进行重定义

(2)重定义这些引脚时,也要同时使能 RCC_APB2Periph_AFIO 复用时钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值