问题描述
在NUC977DK61Y芯片上有编码器,有串口通讯,当编码器旋转过快,导致串口数据错乱。
问题定位
由于芯片的串口只有中断模式接收数据,没有DMA,我当时一直看代码,发现没问题,后来我意识到问题方向不对, 由于我的操控是编码器操控,监控到的数据是每次跟编码器旋转速度有关系,快了就数据接收出问题。
于是往编码器方向找问题,看到编码器里面AB项上下沿都触发中断,然后在中断中还有延迟函数(隐藏在别的业务函数中)
处理方案
问题基本上找到,就是编码器的中断导致UART接收出问题,果断将编码器的中断函数精简,将业务提取出来去主循环处理 中断只负责最基本的数据标记和计数。不做任何其他逻辑处理,这样子编码器与UART就能很好的配合工作。