STM32之关闭JTAG

本文详细介绍了如何将STM32F103CBT6单片机的JTAG口通过remap配置为SWJ口进行在线调试,包括关键代码片段和相关寄存器配置,适用于需要改变调试方式的开发者。

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

1.有些时候不想用JTAG口(而用SWJ在线调试),把JTAG暂用的IO通过remap出来使用

2.比如48 pin的STM32F103CBT6单片机:

  

 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
// 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能

注意:不要忘记在RCC_Configuration()中开启AFIO时钟,
//AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

总结:AHB主要负责外部存储器时钟。APB2负责AD,I/O,高级TIM,串口1。APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。

转载于:https://www.cnblogs.com/itloverhpu/p/3250796.html

### 如何在 STM32F4 上禁用 JTAG 接口 对于 STM32F4 系列微控制器,在禁用 JTAG 接口时,不再通过专门的 API 函数直接关闭 JTAG 功能。相反,可以通过重新映射 JTAG 引脚至其他外设功能或 GPIO 来间接达到禁用效果。 具体操作如下: #### 方法一:使用 `HAL` 库函数配置引脚复用 为了禁用 JTAG 并释放其占用的 IO 口给其他用途,可以利用 HAL 库提供的 `__HAL_RCC_AFIO_CLK_ENABLE()` 和 `HAL_GPIO_Init()` 函数初始化相关引脚为所需的功能模式而非保留作调试接口之用[^2]。 ```c // 启用 AFIO 时钟 __HAL_RCC_AFIO_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; // 设置要使用的引脚模式 (例如推挽输出) GPIO_InitStruct.Pin = GPIO_PIN_13 | GPIO_PIN_14; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); ``` 上述代码片段展示了如何将原本属于 JTAG 的 PA13 和 PA14 转变为普通的推挽输出型通用输入/输出端口。 #### 方法二:修改启动文件中的系统配置寄存器设置 另一种更底层的方式是在应用程序开始执行之前调整系统的配置位以阻止硬件自动启用 JTAG 模块。这通常涉及到更改启动文件里的相应部分来清除特定标志位,使得即使有外部请求也不会激活该模块[^3]。 需要注意的是,如果计划将来还需要使用 SWD 或者 JTAG 进行在线编程,则不应简单地把这些引脚全部转换成普通 I/O;可以选择只改变其中一部分的行为,比如仅影响 NRST、JTCK/TCK 等不影响整体调试流程的关键信号线之外的部分。 另外值得注意的一点是,某些情况下可能因为误操作导致整个芯片无法再通过常规手段连接调试工具。为了避免这种情况发生,建议采取措施确保能够在不依赖于主 Flash 中存储的应用程序的情况下恢复对设备的访问权限,如采用专用引导加载程序等方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值