当前位置: 代码迷 >> 单片机 >> stm32 串口,该怎么解决
  详细解决方案

stm32 串口,该怎么解决

热度:465   发布时间:2016-04-28 15:34:38.0
stm32 串口
stm32 循环从串口收发数据,为什么只有加延时才能成功?寄存器反应不过来?
------解决方案--------------------
是串口太慢,如果发送过种中你更新数据缓冲寄存器,那么发送的数据并会出错。

有兴趣,可以自己计算一下你用的波特率下,通信一个位所需要的时间与你一个机器周期所需要的时间的差异

另外,STM32的串口是双缓冲,这也是有别于一般51的,在编程的时候也要把这个考虑进去
------解决方案--------------------
引用:
引用:

是串口太慢,如果发送过种中你更新数据缓冲寄存器,那么发送的数据并会出错。

有兴趣,可以自己计算一下你用的波特率下,通信一个位所需要的时间与你一个机器周期所需要的时间的差异

另外,STM32的串口是双缓冲,这也是有别于一般51的,在编程的时候也要把这个考虑进去


谢谢,不用延时的话有什么好的办法吗?

如果有OS的话可以考虑新建一个任务专门处理收发任务
------解决方案--------------------
串口控制器中有一位显示是否发送成功,判断那位是否置1。。。

循环等待到那一位置1之后才能发第二个数据。。(所以这是有个操作系统最好了~)

记得要清零呢?

还有,如果发送的数据不多,就不要用DMA了,因为那个东西启动一次也要蛮久的。。但是那个东西写驱动时会经常用?

本人小白~
------解决方案--------------------
判断发送完成再送下一个!