各位大家好: stm32f051,主频48M.硬件资源确定,无法进行修改. stm32前后台跑,后台一直在扫描12个单总线设备在线情况,通过单总线的复位和应答时序判定设备在线与否.当然,在时序里就作了关/开总中断处理.问题(两个问题都实际测试了)就来了, 首先,频繁的关/开总中断,影响前台串口中断响应!测试发现,串口收到数据有时候不完整,导致校验通不过;有时候串口没有响应(可能串口中断处于关闭状态); 其次,如果时序不作关/开总中断,其他的中断就会打坏复位和应答时序,影响设备在线与否情况! 按照道理来讲,执行单总线的时序,需要关闭中断,防止时序受干扰.但是,后台就是一直在扫描单总线设备在线和解析串口数据.如果串口没有数据的话,后台就是扫描设备在线.这就会导致串口中断一直处于关闭状态.于是,就降低设备的扫描周期,设定为100-200ms,偶尔出现设备无响应和数据接受不完整.此时,设备在线情况已经出现延时了!! 如果有此方面处理经验的人士,讨论下!现在就想,设备在线与否快速体现,串口接受不要受影响!谢谢! |
就算是DMA,还是要通过串口中断啊!
串口中断的频率明显会少很多