关于串口DMA模式下rt_device_close问题

发布于 2020-07-03 10:55:06

串口设备使用DMA模式打开,可以进行正常的收发
rt_device_open(serial, RT_DEVICE_FLAG_DMA_TX | RT_DEVICE_FLAG_DMA_RX);

rt_device_close(serial);
但是关闭此设备后继续给串口发送消息仍然会进入DMA服务函数(rt_dma_recv_update_put_index)

导致系统报错

查看更多

关注者
0
被浏览
74
Ernest
Ernest 2020-07-03

问题分析

uart 没有关掉,包括 dma deinit 相关的代码

解决流程

  • 查看驱动中是否有关闭 uart 及其 dma 的代码
  • 没有的话,添加相关代码;有的话,查看 close uart,相关接口是否进入
2 个回答
miaomiao
miaomiao 2020-07-09

手动关闭中断就可以了,官方的驱动close设备后不会关闭DMA中断,再次open的时候会报错

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友