ACHYUT MADHAWAN
ACHYUT MADHAWAN

Reputation: 21

Built in LED is off when GPIOC13 is high, but on then GPIOC13 is low

I am a very newbie in microcontroller and the embedded world, so I started with trying to code a blinking programme in stm32 using basics registers and all, finally, I got it to blink, but then I found that whenever the pin pc13 is high the built-in led is off but on when pc13 is low (exactly reversed!), I don't know why I even added an external led to check whether I am right or not and I am right (in doubting it's working) the external led is on whenever builtin is off and vice versa, please help???? my code is : (my board is STM32F103C8 64KB FLASH, STM32_SMART BOARD)

#include "stm32f10x.h"                  // Device header


void delay(int rep);

int main(void)
{
    RCC->APB2ENR |= 0x10; /// Or  0b10000 --> Anabling Preiph GPIOC
    GPIOC->CRH &= 0xFF0FFFFF;  /// Reset the PORT C PIN 13
    GPIOC->CRH |= 0x00300000;  /// Set Port C PIN 13 as Output 
    GPIOC->ODR  |= 0x2000;     /// Set Port C Pin 13 
    while(1)
    {
        /// Blinking the Port C pin 13 
        GPIOC->ODR  |= 0x2000;
        delay(10000000);
        GPIOC->ODR  &= ~0x2000;
        delay(10000000);
        
    }

}


/// Random time delay Function
void delay(volatile int a) {
    //Added volatile in a and in i
    for (volatile int i = 0; i < a; i++);
}

Upvotes: 2

Views: 1175

Answers (1)

0___________
0___________

Reputation: 67476

The LED can be connected in two ways. To the pin and to GND or VCC. The first one will turn on the LED when the pin is high. The second one when the pin is low.

enter image description here

From your description, your led is connected to the Vcc.

Upvotes: 2

Related Questions