#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stm32c0xx.h>
#include <stm32c0xx_hal.h>
void USER_GPIOA_Init( void ){
// Enable GPIOA clock
RCC->IOPENR = RCC->IOPENR | ( 0x1UL << 0U );
// Configure PA5 as output push pull
GPIOA->BSRR = 0x1UL << 21U; // Reset PA5 low to turn off LED
GPIOA->PUPDR = GPIOA->PUPDR & ~( 0x3UL << 10U ); // Clear pull-up/pull-down bits for PA5
GPIOA->OTYPER = GPIOA->OTYPER & ~( 0x1UL << 5U ); // Clear output type bit for PA5
GPIOA->MODER = GPIOA->MODER & ~( 0x2UL << 10U ); // Set PA5 as output
GPIOA->MODER = GPIOA->MODER | ( 0x1UL << 10U ); // Set PA5 as output
}
void USER_GPIOD_Init( void ){
// Enable GPIOA clock
RCC->IOPENR = RCC->IOPENR | ( 0x1UL << 3U );
// Configure PA5 as output push pull
GPIOD->BSRR = 0x1UL << 16U; // Reset PA5 low to turn off LED
GPIOD->PUPDR = GPIOD->PUPDR & ~( 0x3UL << 0U ); // Clear pull-up/pull-down bits for PA5
GPIOD->OTYPER = GPIOD->OTYPER & ~( 0x1UL << 0U ); // Clear output type bit for PA5
GPIOD->MODER = GPIOD->MODER & ~( 0x2UL << 0U ); // Set PA5 as output
GPIOD->MODER = GPIOD->MODER | ( 0x1UL << 0U ); // Set PA5 as output
}
int main(void)
{
HAL_Init();
USER_GPIOA_Init();
USER_GPIOD_Init();
while (1)
{
GPIOA->ODR ^= (1<<5);
GPIOD->ODR ^= (1<<0);
HAL_Delay(500);
}
return 0;
}