
1:SWJ调试引脚![]() ![]() 由表291可知JTAG接口占用了PA13、PA14、PA15、PB3和PB4引脚,作为JTAG口应用时PA13、PA15、PB3和PB4引脚默认内部上拉,PA14引脚默认内部下拉; SWD接口占用了PA13、PA14引脚; 2:释放SWJ接口引脚 ![]() ![]() 由表292可知有三种情况下,SWJ可以释放某些引脚作为普通IO使用。 01:Full SWJ (JTAG-DP + SW-DP) but without NJTRST情况下,可以释放PB4; 02:JTAG-DP Disabled and SW-DP Enabled情况下,可以释放PB3、PB4和PA15; 03:JTAG-DP Disabled and SW-DP Disabled情况下,PA13、PA14、PA15、PB3和PB4引脚可以全部释放。 释放作为普通IO后,引脚默认的状态也发生改变。 3:软件配置 将SWJ接口引脚释放成为普通IO需要软件配置。具体配置说明如下: 01:Full SWJ (JTAG-DP + SW-DP)but without NJTRST情况下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); 02:JTAG-DP Disabled and SW-DPEnabled情况下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); 03:JTAG-DP Disabled and SW-DPDisabled情况下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE); 附: 之前发过的帖子 01: 02: [url=STM32高级定时器死区控制 https://www.stmcu.org.cn/module/ ... &fromuid=378879 (出处: 意法半导体STM32/STM8技术社区)]STM32高级定时器死区控制[/url] |
谢谢 支持
我在做CMSIS-DAP编码的时候,成功释放了PA13-SWDIO和PA14-SWCLK,发现,
每次操作之前都必须先执行:
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_DISABLE;
不能仅仅在初始化的时候做一次就算了。完整的代码,参见我的贴子:
【源代码】STM32F103C8T6最小板搞定CMSIS-DAP和SWO功能
(有关部分,在DAP_config.h里面)
请问你控制PB3的问题解决了没呢?
没有,后来没时间继续测试了。