#ifndef USART_H #define USART_H template<> void interrupt() { USART1.DR; GPIOA.ODR ^= 1 << 5; } void usart_enable() { RCC.enable(RCC.USART1); USART1.BRR = 7500; // 9600 baud USART1.CR1 = 0x202c; Interrupt::enable(Interrupt::USART1); } void usart_send(uint8_t data) { while(!(USART1.SR & 0x80)); // Wait for TXE. USART1.DR = data; } #endif