我目前用 瑞士军刀 开发板学习串口通信的中断输入,并且在接收到数据后,再输出出来读到的数据,想给各位大佬指点一下我的代码和实际项目比有什么不足的地方。
如果数据一次性来的比较多,速率还比较快的话,中断中处理数据可能会丢掉一些数据,建议使用环形缓冲区来保存数据。中断中只做数据存储,不再做别的复杂操作。处理放到外部循环中。
这样可以不会让中断过多的占用CPU,另外环形缓冲区也能尽可能的使数据都能得到保存而不会因为处理不过来丢掉很多数据。
当然你这里在中断中的处理也是个存储,时间不会占用很多,就这个程序是没什么大问题。但是你那个存储数据的方式你使用的是数组,如果数据量比较多超过数组的大小的话,要注意因为数组使用完了发生越界的问题。
对于中断,原则上是不要在中断服务中处理耗时比较多的事情,任何中断皆如此。
1 个赞
好的,感谢老师指点,我后面研究一下环形缓冲区的写法。