Stm32 无法闪烁JTDI引脚

Stm32 无法闪烁JTDI引脚,stm32,gpio,jtag,Stm32,Gpio,Jtag,我正在使用STM32F103RCT6闪烁连接到PU中PA15-JTDI的LED 我的GPIO配置如下 GPIOA->CRH |= GPIO_CRH_MODE15; //Output mode, max speed 50 MHz. GPIOA->CRH &= ~GPIO_CRH_CNF15; //General purpose output push-pull\ 我试着像这样眨眼 #define LED_HIGH() (GPIOA->BSRR

我正在使用STM32F103RCT6闪烁连接到PU中PA15-JTDI的LED

我的GPIO配置如下

GPIOA->CRH |= GPIO_CRH_MODE15;      //Output mode, max speed 50 MHz.
GPIOA->CRH &= ~GPIO_CRH_CNF15;      //General purpose output push-pull\
我试着像这样眨眼

#define LED_HIGH()  (GPIOA->BSRR    |= GPIO_BSRR_BR15)  //LED High
#define LED_LOW()   (GPIOA->BSRR    |= GPIO_BSRR_BS15)  //LED LOW
数据表上写着

要释放GPIO的引脚,我们需要将SWJ_CFG[2:0]配置为010或100。因此,我正在进行配置

AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1;     //((uint32_t)0x02000000) as 010
数据表还说我们需要对ODR/IDR寄存器做些什么,但我没有弄清楚如何将PA15(或任何JTAG引脚)配置为GPIO

AFIO_地图中的SWJ_CFG如下所示:

任何建议都会有帮助


提前感谢

不要忘记启用
GPIOA
AFIO
的时钟。这两个选项都可以在
RCC->APB2ENR
中启用。只要未启用,就会忽略寄存器写入

RCC->APB2ENR |= RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPAEN;

在你们的帮助下,我得到了答案

整个代码在这里是用keilv5和CMSIS编写的

#include "stm32f10x.h"

#define LED_LOW()   (GPIOA->BSRR    |= GPIO_BSRR_BR15)          //Led Low
#define LED_HIGH()  (GPIOA->BSRR    |= GPIO_BSRR_BS15)          //Led High

void GPIO_Init(void);
void Blink_Led(uint16_t ms);
void Delay(uint16_t ms);

int main(void)
{
    GPIO_Init();
    AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1;          //To Free PA15
    while(1)
    {
        Blink_Led(1000);
    }
}

/*Random Delay*/ 
void Delay(uint16_t ms)
{
    for (int i=0;i<ms;i++)
        for (int j=0;j<5120;j++);
}

void Blink_Led(uint16_t ms)
{
    LED_LOW();
    Delay(ms);
    LED_HIGH();
    Delay(ms);
}

void GPIO_Init()
{
    RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;     //Clock for Port A - PA15
    RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;     //ENABLE clock for alternate function

    GPIOA->CRH |= GPIO_CRH_MODE15;      //Output mode, max speed 50 MHz.
    GPIOA->CRH &= ~GPIO_CRH_CNF15;      //General purpose output push-pull
}
#包括“stm32f10x.h”
#定义LED_LOW()(GPIOA->BSRR |=GPIO_BSRR_BR15)//LED LOW
#定义LED_HIGH()(GPIOA->BSRR |=GPIO_BSRR_BS15)//LED HIGH
无效GPIO_初始(无效);
无效闪烁发光二极管(uint16毫秒);
无效延迟(uint16_t ms);
内部主(空)
{
GPIO_Init();
AFIO->MAPR |=AFIO_MAPR_SWJ_CFG_1;//释放PA15
而(1)
{
闪烁发光二极管(1000);
}
}
/*随机延迟*/
无效延迟(uint16_t ms)
{
对于(int i=0;iAPB2ENR |=RCC_APB2ENR_AFIOEN;//为备用功能启用时钟
GPIOA->CRH |=GPIO_CRH_MODE15;//输出模式,最大速度50 MHz。
GPIOA->CRH&=~GPIO\U CRH\U CNF15;//通用输出推拉
}

@Colin_us,但在数据表中,其给定位为26:24 SWJ_uCFG[2:0]:串行线JTAG配置我已经编辑了问题您现在可以检查寄存器了有人能帮我吗????是的,这就是我缺少的。我没有为AFIO启用时钟。LED闪烁,但它的亮度太低。如果我通常将电源和接地连接到LED,它的亮度很好。这与代码有关吗?或者电路问题。很好,我也解决了,因为你的答案。谢谢。