#include "stm32c0xx.h"
int main(void) {
// 1. Enable GPIOA Clock (STM32C0 uses RCC_IOPENR, not AHBENR!)
RCC->IOPENR |= RCC_IOPENR_GPIOAEN;
// 2. Configure PA5 as Output (GPIOx_MODER)
GPIOA->MODER &= ~GPIO_MODER_MODE5_Msk; // Clear MODE5 bits
GPIOA->MODER |= GPIO_MODER_MODE5_0; // Set as output (01)
// 3. Set Output Type to Push-Pull (GPIOx_OTYPER)
GPIOA->OTYPER &= ~GPIO_OTYPER_OT5; // 0 = Push-pull
// 4. Set Speed to Low (GPIOx_OSPEEDR)
GPIOA->OSPEEDR &= ~GPIO_OSPEEDR_OSPEED5; // 00 = Low speed
// 5. No Pull-Up/Pull-Down (GPIOx_PUPDR)
GPIOA->PUPDR &= ~GPIO_PUPDR_PUPD5; // 00 = No pull
while (1) {
// 6. Toggle PA5 (GPIOx_ODR)
GPIOA->ODR ^= GPIO_ODR_OD5;
// 7. Crude Delay
for (volatile uint32_t i = 0; i < 100000; i++);
}
}