+ /* SYSCLK setup --------------------------------------------------------- */
+
+ /* HSEBYP: HSE clock bypass */
+ *RCC_CR &= ~(1u << 18); /* 0: HSE oscillator not bypassed */
+ /* HSEON: HSE clock enable */
+ *RCC_CR |= (1u << 16); /* 1: HSE oscillator ON */
+ /* HSERDY: HSE clock ready flag */
+ while (!(*RCC_CR & (1u << 17))); /* 0: HSE oscillator not ready */
+ /* SW: System clock switch */
+ *RCC_CFGR &= ~(0b11u); /* Clear SW bits */
+ *RCC_CFGR |= (0b01u); /* 01: HSE oscillator selected as system clock */
+ /* SWS: System clock switch status */
+ while ((*RCC_CFGR & (0b11u << 2)) != (0b01u << 2)); /* 01: HSE oscillator used
+ as the system clock */
+ /* HSION: Internal high-speed clock enable */
+ *RCC_CR &= ~(1u); /* 0: HSI oscillator OFF */
+
+ /* UART setup ----------------------------------------------------------- */
+
+ /* GPIOAEN: IO port A clock enable */
+ *RCC_AHB1ENR |= (1u); /* 1: IO port A clock enabled */
+ /* MODERy[1:0]: Port x configuration bits (y = 0..15) */
+ *GPIOA_MODER &= ~(0b1111u << 18); /* Clear PA9 and PA10 bits */
+ *GPIOA_MODER |= (0b1010u << 18); /* 10: Alternate function mode */
+ /* AFRHy: Alternate function selection for port x bit y (y = 8..15) */
+ *GPIOA_AFRH &= ~(0b11111111u << 4); /* Clear PA9 and PA10 bits */
+ *GPIOA_AFRH |= (0b01110111u << 4); /* 0111: AF7 */
+
+ /* PA9: USART1_TX
+ * PA10: USART1_RX */
+
+ /* USART1EN: USART1 clock enable */
+ *RCC_APB2ENR |= (1u << 4); /* 1: USART1 clock enabled */