Search code examples
stm32gpiojtag

Cannot Blink JTDI pin


I am using STM32F103RCT6 to blink a LED which is connected to PA15 - JTDI in PU.

My GPIO Configuration is like this

GPIOA->CRH |= GPIO_CRH_MODE15;      //Output mode, max speed 50 MHz.
GPIOA->CRH &= ~GPIO_CRH_CNF15;      //General purpose output push-pull\

And I am trying to Blink Like this

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

In datasheet it says

SWJ

To free the Pin for GPIO we need to configure SWJ_CFG[2:0] either with 010 or 100. So for that i am configuring

AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1;     //((uint32_t)0x02000000) as 010

Datasheet also says we need to do something with ODR/IDR registers but i am not getting correcty how to configure PA15 (or any JTAG pins) as GPIO.

The SWJ_CFG in AFIO_MAPR is given as

enter image description here

Any suggestion will be helpful.

Thank You in advance


Solution

  • Don't forget to enable the clocks for GPIOA and AFIO. Both can be enabled in RCC->APB2ENR. As long as they are not enabled, register writes are ignored.

    RCC->APB2ENR |= RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPAEN;