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

This commit is contained in:
chenjh 2021-06-17 10:32:17 +08:00
parent 5ac5d92cbb
commit 0613cf8ca2
2 changed files with 5 additions and 1 deletions

View File

@ -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

View File

@ -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;