« 上一篇下一篇 »

STM32引脚JTDO、JNTRST与JTDI作为普通IO口使用配置(转载)

转载本文是因为,最近在用STM32F103RCT6的MCU时,硬件人员设计电路用了SPI3的几个引脚,我也没太在意,结果编码时发现这几个脚上电复位后的默认功能是JTDO、JTDI和JNTRST,想做普通IO使用还必须进行重映射操作。于是我就进行了重映射,结果发现控制还是不起效,后来看到这篇文章写的,如果配置了重映射后,又配置了其他的引脚,那么配置就不起作用了,以后每次对这几个脚进行拉高拉低操作时,前面都必须附带一条重映射配置的代码。于是我照着试了下,果然可以,故此转载以记录。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/MengchiCMC/article/details/69337334


使用Jlink向STM32烧录程序时,需要使用6个芯片的引脚(以STM32F103C8T6为例),分别是PB4/JNTRST、PB3/JTDO、PA13/JTMS、PA14/JTCK、PA15/JTDI、NRST。标准的20针JLink接口如下图所示。 

 

当芯片IO口资源比较紧张时,可选择SW模式烧录程序。SWD只需用到PA13/JTMS、PA14/JTCK两根线,NREST可以接可不接,而剩下的PB4/JNTRST、PB3/JTDO和PA15/JTDI就可以当做普通IO使用。但是这三个口当做普通IO使用时需要先配置。配置方法:

void GPIOInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);    
    /* Disable JLink, enable SW */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
    /* Push-pill output, it can be other output types */
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
    /* Push-pill output, it can be other output types */
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}

GPIO_Remap_SWJ_JTAGDisable已在“stm32f10x_gpio.h”文件中进行了宏定义:

#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  
/*!< JTAG-DP Disabled and SW-DP Enabled */

注意!!!这三个引脚默认的是JLink的复用功能,如果程序中还有其他GPIO口的配置,那这三个引脚的GPIO初始化一定要放在其他所有GPIO配置之后,否则依然无法作为普通IO使用。


如果非要把这三个引脚的配置放在其他GPIO配置之前,那么在程序中每次使用这些引脚前,需要再添加一句 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 

例如:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  
GPIO_ResetBits(GPIOB, GPIO_Pin_4);  // PB4 is set to 0;

————————————————

版权声明:本文为CSDN博主「GroupHuang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/mengchicmc/article/details/69337334