一,为什么要使用环形队列来发送数据?是为了解决什么问题呢!
?
这节说了怎么用中断发送数据,但是大家是否想过,这种中断发送有个bug,看一下下面的
?
?...直接利用环形队列是很好的选择.
我把发送的数据写入环形队列,然后打开串口发送中断
串口发送中断里面判断环形队列里面的数据个数是不是大于0,如果是就读出来发出去!
二,定义一些变量
?
?
?
?...三,然后把数组交给 环形队列变量去管理
?
四,串口发送中断里面就是这样
?
五,修改一下环形队列的一个函数,填充完数据就打开中断
?
六,现在测试
?
?
现在的数据不会出现丢失!...注意:即使是使用了环形队列也不要在主循环里面
?
环形队列缓存也有限! 只要波特率定好了,中断发送每一位数据的时间是一定的,发送数据就一定需要时间!
现在是直接造成死机,
?...其实造成死机的原因是因为环形队列里面使用的printf,
?
而printf 并不是中断发送,造成了冲突
?
改一下
?
?