瀏覽代碼

[serial] 解决serial_close未清除回调接口的问题

chenjh 3 年之前
父節點
當前提交
0613cf8ca2
共有 2 個文件被更改,包括 5 次插入1 次删除
  1. 1 1
      bsp/stm32/libraries/HAL_Drivers/drv_usart_v2.h
  2. 4 0
      components/drivers/serial/serial_v2.c

+ 1 - 1
bsp/stm32/libraries/HAL_Drivers/drv_usart_v2.h

@@ -28,7 +28,7 @@ int rt_hw_usart_init(void);
 
 #else
 #define UART_SET_TDR(__HANDLE__, __DATA__)  ((__HANDLE__)->Instance->DR = (__DATA__))
-#define UART_GET_RDR(__HANDLE__)  (return (__HANDLE__)->Instance->DR & 0xFF))
+#define UART_GET_RDR(__HANDLE__)            ((__HANDLE__)->Instance->DR & 0xFF)
 #endif
 
 

+ 4 - 0
components/drivers/serial/serial_v2.c

@@ -939,6 +939,10 @@ static rt_err_t rt_serial_close(struct rt_device *dev)
     rt_serial_tx_disable(dev, dev->open_flag &
                         (RT_SERIAL_TX_BLOCKING | RT_SERIAL_TX_NON_BLOCKING));
 
+    /* Clear the callback function */
+    serial->parent.rx_indicate = RT_NULL;
+    serial->parent.tx_complete = RT_NULL;
+
     /* Call the control() API to close the serial device */
     serial->ops->control(serial, RT_DEVICE_CTRL_CLOSE, RT_NULL);
     dev->flag &= ~RT_DEVICE_FLAG_ACTIVATED;