请选择 进入手机版 | 继续访问电脑版
论坛
登录 | 立即注册
查看: 3049|回复: 3

串口波特率如何计算?

[复制链接]

4

主题

9

帖子

75

积分

注册会员

Rank: 2

积分
75
发表于 2017-12-12 22:55:29 | 显示全部楼层 |阅读模式
各位大侠,我用的是安信可的eclipse IDE ,板子用的是ESP8266-01S,我打算用串口每500ms往外发送数据,但是,串口助手接收到的是乱码。就是上电的时候,串口助手接收到的数据是正常的字符串(串口波特率是76800)。然后后续再接收到的数据就是乱码了,把串口助手波特率设置为我程序中的波特率,接收到的全是乱码,重新设置为76800,也是乱码,
请问各位大侠,遇到这样的问题,可能是哪些原因造成的这个问题?

下面代码是抄别人的。
  1. #include "ets_sys.h"
  2. #include "osapi.h"

  3. # include "uart.h"
  4. # include "spi.h"
  5. # include "key.h"

  6. #include "user_interface.h"

  7. #include "user_devicefind.h"
  8. #include "user_webserver.h"


  9. os_timer_t ser_timer;                        // 宏定义定时器参数


  10. /*************************************************
  11. * 以下函数,暂时不需要写,空白保存就好了
  12. *
  13. *************************************************/
  14. void ICACHE_FLASH_ATTR
  15. user_rf_pre_init(void)
  16. {

  17. }

  18. /*************************************************
  19. * 名称:串口输出字符
  20. * 功能:打印 SDK 版本信息
  21. * 说明:
  22. * 时间:2017年12月12日 21:27:07
  23. *************************************************/
  24. void DaYinBanBen(void)
  25. {
  26.        os_printf("SDK :%s\n",system_get_sdk_version());
  27. }

  28. /*************************************************
  29. * 以下这个函数,是主函数,类似于C语言的main函数
  30. *
  31. *************************************************/
  32. void ICACHE_FLASH_ATTR
  33. user_init(void)
  34. {
  35.        UART_SetBaudrate(UART0,BIT_RATE_38400);        //设置波特率, 默认和外部晶振有关
  36.        UART_SetParity(UART0,NONE_BITS);                      //设置校验位, 默认无校验位
  37.        UART_SetWordLength(UART0, EIGHT_BITS);          //设置数据位, 默认 8 位
  38.        UART_SetStopBits(UART0, ONE_STOP_BIT);           //设置停止位, 默认 1 位
  39.        UART_SetPrintPort(UART0);                                       //设置切换系统默认打印端口, 默认 UART0
复制代码






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

7

主题

9

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2017-12-13 18:37:54 | 显示全部楼层
UART0默认会在上电启动期间输出一些打印,此期间打印内容的波特率与所用的外部晶振频率有关。使用40MHz晶振时,该段打印波特率为115200;使用26MHz晶振时,该段打印波特率为74880。你自己看看你设置的波特率是否正确。UART_SetBaudrate(UART0,BIT_RATE_38400)请直接填波特率数字即可。
ESP8266 NONOS SDK开发之6UART的操作使用
http://www.bugclub.cn/forum.php?mod=viewthread&tid=421
(出处: 众享嵌入式联盟)
回复

使用道具 举报

4

主题

9

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2017-12-13 21:54:35 | 显示全部楼层
白鹤 发表于 2017-12-13 18:37
UART0默认会在上电启动期间输出一些打印,此期间打印内容的波特率与所用的外部晶振频率有关。使用40MHz晶振 ...

谢谢大侠讲解!按照您帖子中写的,直接写数值,串口能读出正常的字符串了。
昨天我也是按照您的说法写的程序。但今天我自己发现,我写完程序后,没有保存的习惯,直接就是编译了。个人怀疑,有可能是因为我写完程序后,没有保存就进行了编译,然后编译的程序是没有修改前的。
再次感谢大神帮忙。非常感谢!谢谢!
回复

使用道具 举报

4

主题

9

帖子

75

积分

注册会员

Rank: 2

积分
75
 楼主| 发表于 2017-12-13 21:57:01 | 显示全部楼层
结帖!问题已解决,如同白老师所说
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|安信可论坛    

GMT+8, 2020-7-5 06:02 , Processed in 0.016295 second(s), 12 queries , Redis On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表