#define PERIPHERAL_BASE (0x40000000UL)
#define AHB1PERIPH_OFFSET (0x00020000UL)
#define AHB1PERIPH_BASE (PERIPHERAL_BASE + AHB1PERIPH_OFFSET )
#define GPIOA_OFFSET (0x00000000U)
#define GPOIA_BASE (AHB1PERIPH_BASE + GPIOA_OFFSET)
#define RCC_OFFSET (0x00003800UL)
#define RCC_BASE (AHB1PERIPH_BASE + RCC_OFFSET )
#define RCC_AHB1EN_REG_OFFSET (0x00000030UL)
#define RCC_ABH1EN_REG (*(volatile unsigned int*)(RCC_BASE + RCC_AHB1EN_REG_OFFSET) )
#define MODE_REG_OFFSET (0x00000000UL)
#define GPIOA_MODE_REG (*(volatile unsigned int*)(GPOIA_BASE + MODE_REG_OFFSET))
#define OD_REG_OFFSET (0x00000014UL)
#define GPIOA_OD_REG (*(volatile unsigned int*)(GPOIA_BASE + OD_REG_OFFSET))
#define GPIOAEN (1U<<0)
#define PIN5 (1u<<5)
#define LED_PIN PIN5
int main(void){
RCC_ABH1EN_REG |= GPIOAEN;
GPIOA_MODE_REG |= (1U<<10);
GPIOA_MODE_REG &=~(1U<<11);
while(1){
GPIOA_OD_REG ^= LED_PIN;
for(int i=0; i<10000000; i++){
}
}
}