问题背景:

  使用乐鑫的ESP8266做一个物联网的项目,要使用串口0通信,串口1作为打印log。本来是一个非常简单的事情。没想到居然里面有个大坑。本着前任踩坑,后任抱娃的原则。

这里就做个记录,给后面的同仁做一个前车之鉴吧。

  

  调研分析:

  其实,这个关于串口打印及通信的,网上的资料很多,乐鑫官方文档的资料也很多。我尝试用他们的方法去用的时候,怎么都不行。后来才发现,是我用的是新版本。

它的新版本有些库函数都做了优化了。已经不存以前的那些串口接口了,这样就导致了他们的那些配置软件串口的方法根本行不通了。

  新的SDK,底层函数变了,导致配置全都和以前不一样的,下面是新的串口配置流程:

  使用串口1打印:

如果SDK版本是 v3.1 的话,可以直接在 make menuconfig 面板里面直接配置:

    

Component config --->
ESP8266-specific --->
UART for console output (Custom) --->
UART peripheral to use for console output (-) (UART1) --->

  在 v3.0 版本配置项可能有些出入,但是大致类似。或者使用下面代码:
    

PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_U1TXD_BK);
uart_param_config(UART_NUM_1, &uart_config);
uart_driver_install(UART_NUM_1, , BUF_SIZE + , BUF_SIZE + , NULL)

串口0的通信配置:

  

uart_config_t uart_config = {
.baud_rate = , //波特率
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE}; uart_param_config(UART_NUM_0, &uart_config);
uart_driver_install(UART_NUM_0, BUF_SIZE * , , , NULL); // 为收到的数组数字开辟一个内存
uint8_t *data = (uint8_t *)malloc(BUF_SIZE); while ()
{
// 读取串口数组
int len = uart_read_bytes(UART_NUM_0, data, BUF_SIZE, / portTICK_RATE_MS); //打印下数组 printf("uart_read_bytes data[%d]= %s \n ", data); // 主动发送数组到串口
uart_write_bytes(UART_NUM_0, (const char *)data, len);
}

 这个完成以后,你就可以做一个测试了。本人测试是可以的。有啥问题欢迎沟通讨论。

  总结反思:

  技术的问题,特别是不熟悉的平台,花时间去打磨是必须的。  

最新文章

  1. MySQL性能优化
  2. C++ 关键字浅谈
  3. 老电脑如果从windows7升级到windows10不断重启进不了系统,还是想用windows10,怎么办?
  4. [转]搭建高可用mongodb集群(二)—— 副本集
  5. 局部内部类访问方法中的局部变量为什么加final
  6. Spring AOP 实现原理
  7. Android进阶笔记04:Android进程间通讯(IPC)之Messenger
  8. JQuery 去除字符串两边多余的空格
  9. php 返回json 解析 报Wide character in print
  10. 控制textbook输入字符
  11. Azure Powershell对ARM资源的基本操作
  12. sublime_text3代码自动补全
  13. Loadrunner 11.00录制App脚本篇(Win10)
  14. node.js(小案例)_使用mongodb对学生信息列表优化
  15. 撩课-Web大前端每天5道面试题-Day32
  16. 快速定位iOS线上BUG在哪个控制器崩溃
  17. API接口测试中需要注意的地方
  18. 深入理解ajax系列第七篇
  19. 结构光和ToF
  20. angularjs transitions

热门文章

  1. Django之使用redis缓存session,历史浏览记录,首页数据实现性能优化
  2. 从0开始学FreeRTOS-(列表与列表项)-3
  3. Web性能优化:雅虎35条
  4. Mybatis入门简版(一)
  5. Oracle 编写存储过程并设置定时执行
  6. cobalt strike笔记-CS与MSF,Armitage,Empire互转shell
  7. phpstudy后门rce批量利用脚本
  8. [LUOGU3413] SAC#1 - 萌数
  9. CF991D Bishwock
  10. 【Spring Cloud】全家桶介绍(一)