首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

stm32 串口,该怎么解决

2012-12-29 
stm32 串口stm32 循环从串口收发数据,为什么只有加延时才能成功?寄存器反应不过来?[解决办法]是串口太慢,

stm32 串口
stm32 循环从串口收发数据,为什么只有加延时才能成功?寄存器反应不过来?
[解决办法]
是串口太慢,如果发送过种中你更新数据缓冲寄存器,那么发送的数据并会出错。

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

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

引用:
引用:

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

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

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


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

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

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

记得要清零呢?

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

本人小白~
[解决办法]
判断发送完成再送下一个!

热点排行