STM32/STM8技术william hill官网
直播中

徐小婷

7年用户 206经验值
私信 关注
[问答]

请问stm32串口中断接收数据被持续的外部中断会导致接收数据异常吗?

情景是这样的,STM32串口使用中断接收数据,但是外部中断优先级高于串口中断,当串口正接收数据时(还没接收完),被外部中断所中断,并且是持续的多次长时间的外部中断,也就是说很长一段时间是会响应外部中断而不会处理串口接收中断,,这样的情况会导致串口接收数据异常么,比如说接收数据不完整之类的问题?

回帖(7)

李华瑞

2019-3-19 06:55:00
注意抢占式优先级和响应优先级
举报

崔琳

2019-3-19 07:05:37
当然会导致串口数据混乱;
这里需要说一点, 中断中不适合做大量操作,其只是响应中断后将数据运算放到主函数中处理,中断中只是置标志,读取数据而已。
否则你的代码肯定不稳定。
举报

罗兰君

2019-3-19 07:22:32
会的,可以用dma 来接收
举报

徐娟

2019-3-19 07:31:56
应该会丢掉数据.
举报

颜廷波

2019-3-19 07:43:03
肯定会导致数据丢失、错乱,这种情况下不适合串口通讯,建议考虑4楼的提议,直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。节省了CPU的资源来做其他操作。
举报

王育来

2019-3-19 07:49:45
应该不影响硬件接收到一个字节的数据,但是如果程序不能及时响应中断可能造成接收到的数据来不急不取走而覆盖,造成数据丢失的想象。
举报

李晓莉

2019-3-19 08:06:11
肯定会的啊,外部中断程序中不要有太多的程序。这样会影响中断响应效率的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分