}
#endif
} else {
- usart->reg->cr1 &= ~(1 << STM_USART_CR1_RXNEIE);
+ usart->reg->cr1 &= ~(1UL << STM_USART_CR1_RXNEIE);
}
}
}
_ao_usart_rx(usart, is_stdin);
if (!_ao_usart_tx_start(usart))
- usart->reg->cr1 &= ~(1<< STM_USART_CR1_TXEIE);
+ usart->reg->cr1 &= ~(1UL << STM_USART_CR1_TXEIE);
if (usart->reg->isr & (1 << STM_USART_ISR_TC)) {
usart->tx_running = 0;
- usart->reg->cr1 &= ~(1 << STM_USART_CR1_TCIE);
+ usart->reg->cr1 &= ~(1UL << STM_USART_CR1_TCIE);
if (usart->draining) {
usart->draining = 0;
ao_wakeup(&usart->tx_fifo);
void
ao_serial_shutdown(void)
{
+# if SERIAL_2_PA2_PA3
+ stm_moder_set(&stm_gpioa, 2, STM_MODER_INPUT);
+ stm_moder_set(&stm_gpioa, 3, STM_MODER_INPUT);
+# elif SERIAL_2_PA9_PA10
+ stm_moder_set(&stm_gpioa, 9, STM_MODER_INPUT);
+ stm_moder_set(&stm_gpioa, 10, STM_MODER_INPUT);
+# elif SERIAL_2_PA14_PA15
+ stm_moder_set(&stm_gpioa, 14, STM_MODER_INPUT);
+ stm_moder_set(&stm_gpioa, 15, STM_MODER_INPUT);
+# elif SERIAL_2_PB6_PB7
+ stm_moder_set(&stm_gpiob, 6, STM_MODER_INPUT);
+ stm_moder_set(&stm_gpiob, 7, STM_MODER_INPUT);
+#endif
#if HAS_SERIAL_1
stm_rcc.apb2enr &= ~(1 << STM_RCC_APB2ENR_USART1EN);
#endif
#if HAS_SERIAL_2
+ stm_nvic_set_disable(STM_ISR_USART2_POS);
stm_rcc.apb1enr &= ~(1 << STM_RCC_APB1ENR_USART2EN);
#endif
}