#include <stdint.h>
#define RCC_Base 0x40021000
#define GPIOD_Base 0x50000C00
//Pointer declarations
uint32_t *RCC_Enable_Reg = (uint32_t*) (RCC_Base+0x34); //Pointer to AHB1 Enable register
uint32_t *GPIO_Mode_Reg = (uint32_t*) (GPIOD_Base+0x00); //Pointer to Mode register of Port D
uint32_t *GPIOD_OutReg = (uint32_t*) (GPIOD_Base+0x14); //POinter to Output data register of Port D
//Function prototyping
void GPIO_init();
void delay();
//Initialization function
void setup()
{
*RCC_Enable_Reg |= (1<<3); //Enable clock to Port D
*GPIO_Mode_Reg |= (1<<0); //Bit 0 is configured as HIGH to make GPIOD0 as output pin
*GPIO_Mode_Reg &= ~(1<<1); //Bit 1 is configures as LOW to make GPIOD0 as output pin
}
//main function
void loop()
{
*GPIOD_OutReg ^= (1<<0); //GPIOD12 is HOGH & LED is ON
delay(1000);
//*GPIOD_OutReg &= ~(1<<0); //GPIOD12 is LOW & LED is OFF
//delay(10);
}