#include <stdint.h>
#define RCC_AHB2ENR (*(uint32_t*)0x4002104C)
#define RCC_AHB2ENR (*(uint32_t*)0x40021058)
#define GPIOA_MODER (*(uint32_t*)0x48000000)
#define GPIOA_AFRL (*(uint32_t*)0x48000020)
#define USART2_CR1 (*(uint32_t*)0x40004400)
#define USART2_BRR (*(uint32_t*)0x4000440C)
#define USART2_RDR (*(uint32_t*)0x40004424)
#define USART2_TDR (*(uint32_t*)0x40004428)
#define USART_ISR (*(uint32_t*)0x4000441C)
void GPIO_Init()
{
GPIOA_MODER &= ~(3 << 4);
GPIOA_MODER &= ~(3 << 6);
GPIOA_MODER |= ~(2 << 4);
GPIOA_MODER |= ~(2 << 6);
GPIOA_AFRL &= ~(15 << 8);
GPIOA_AFRL &= ~(15 << 12);
GPIOA_AFRL |= (7 << 8);
GPIOA_AFRL |= (7 << 12);
}
void RCC_Init()
{
RCC_AHB2ENR |= (1 << 0);
RCC_APB1ENR |= (1 << 17);
}
void UART_Init()
{
USART2_BRR = (16000000/115200);
USART2_CR1 |= (1 << 0);
USART2_CR1 |= (1 << 2);
USART2_CR1 |= (1 << 3);
}
int main(void)
{
RCC_Init();
GPIO_Init();
}