X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstm32l0%2Fao_serial_stm.c;h=650f2f1f636c335f80e8c27068948b42c65a1cfc;hb=b0ea39f7eb18aa73160b0b848a9000892f43c0e7;hp=8fead99ebdcf876426178212771ba5a97d50984b;hpb=33ea5b3658377cea325db285a3e457724f660384;p=fw%2Faltos diff --git a/src/stm32l0/ao_serial_stm.c b/src/stm32l0/ao_serial_stm.c index 8fead99e..650f2f1f 100644 --- a/src/stm32l0/ao_serial_stm.c +++ b/src/stm32l0/ao_serial_stm.c @@ -66,7 +66,7 @@ _ao_usart_rx(struct ao_stm_usart *usart, int is_stdin) } #endif } else { - usart->reg->cr1 &= ~(1 << STM_USART_CR1_RXNEIE); + usart->reg->cr1 &= ~(1UL << STM_USART_CR1_RXNEIE); } } } @@ -77,11 +77,11 @@ ao_usart_isr(struct ao_stm_usart *usart, int is_stdin) _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); @@ -380,10 +380,24 @@ ao_serial_set_sw_rts_cts(struct ao_stm_usart *usart, 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 }