用ARM UART0使用查询方式发送大量数据,结果发送17个字节就停了,后面的字节都不发送,为什么?

来源:百度知道 编辑:UC知道 时间:2024/06/28 20:48:51
如果在17个字节处加个延时又可以继续发送17个字节,单步执行的话可以全部发送出去,采用循环发送时发送一段时间发送的字节都乱了,为什么会出现这种情况?希望高人指点
单步运行时都是正确的

很多ARM都是通过FIFO来处理UART发送的
比如FIFO是16个Byte,你可以一直往里面填数据,而不用等一个发完再发第二个
但是如果你的速度过快,比如第一个还没发完,FIFO已经被填满了16个Byte,那么你再往FIFO里写就会产生一些意想不到的结果
一般都会有一个FIFO中断,比如FIFO是16个Byte,设置如果你填满了12个,就出发中断,叫你小心,不要再往里写了,当然这个阀值是可以更改的
你可以查查是不是这个问题