diff --git a/bsp/stm32f10x/drivers/usart.c b/bsp/stm32f10x/drivers/usart.c index 4c6f24af309b64b608be8b480b7fe842da9ce7b8..b73f48519a8fa9461b558dbb10463fc145c5407a 100644 --- a/bsp/stm32f10x/drivers/usart.c +++ b/bsp/stm32f10x/drivers/usart.c @@ -69,8 +69,6 @@ static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_c /* Enable USART */ USART_Cmd(uart->uart_device, ENABLE); - /* enable interrupt */ - USART_ITConfig(uart->uart_device, USART_IT_RXNE, ENABLE); return RT_EOK; } @@ -84,13 +82,19 @@ static rt_err_t stm32_control(struct rt_serial_device *serial, int cmd, void *ar switch (cmd) { + /* disable interrupt */ case RT_DEVICE_CTRL_CLR_INT: /* disable rx irq */ UART_DISABLE_IRQ(uart->irq); + /* disable interrupt */ + USART_ITConfig(uart->uart_device, USART_IT_RXNE, DISABLE); break; + /* enable interrupt */ case RT_DEVICE_CTRL_SET_INT: /* enable rx irq */ UART_ENABLE_IRQ(uart->irq); + /* enable interrupt */ + USART_ITConfig(uart->uart_device, USART_IT_RXNE, ENABLE); break; }