stm32 串口,该怎么解决
stm32 串口stm32 循环从串口收发数据,为什么只有加延时才能成功?寄存器反应不过来?[解决办法]是串口太慢,
stm32 串口
stm32 循环从串口收发数据,为什么只有加延时才能成功?寄存器反应不过来?
[解决办法]
是串口太慢,如果发送过种中你更新数据缓冲寄存器,那么发送的数据并会出错。
有兴趣,可以自己计算一下你用的波特率下,通信一个位所需要的时间与你一个机器周期所需要的时间的差异
另外,STM32的串口是双缓冲,这也是有别于一般51的,在编程的时候也要把这个考虑进去
[解决办法]
如果有OS的话可以考虑新建一个任务专门处理收发任务
[解决办法]串口控制器中有一位显示是否发送成功,判断那位是否置1。。。
循环等待到那一位置1之后才能发第二个数据。。(所以这是有个操作系统最好了~)
记得要清零呢?
还有,如果发送的数据不多,就不要用DMA了,因为那个东西启动一次也要蛮久的。。但是那个东西写驱动时会经常用?
本人小白~
[解决办法]判断发送完成再送下一个!