SimonLiu的ESP8266与AliOS Things 学习教程系列之四:uart0和uart1串口打印

欢迎加入交流群:ESP8266 AliOS Things 群 号: 107723112
所有教程请看 AliOS Things 入门教程系列
此教程在SimonLiu的CSDN博客同步更新。

ESP8266有两个串口:uart0uart1,其中uart1RXD被Flash占用,只提供了发送引脚(GPIO2,即UART1_TXD)。通常情况下,我们使用uart0和外设通讯,而使用uart1作为日志打印端口。

小贴士: 如果使用串口接收外设数据,请先关闭CLI,否则可能导致收取数据丢帧或者发生其他错误。

点击查看完整源码

首先,打印有两种方式:

  • LOG()
  • printf()

SimonLiu基于AliOS自带的example\uart.c进行修改,分别使用LOG()printf()进行打印:

    printf("[%d] -- Message from printf -- \r\n",(unsigned)aos_now_ms());
    LOG("== Message from LOG ==\r\n");

注:(unsigned)aos_now_ms()看函数名就可以猜出来它返回的值是系统本次上电启动以后的时间(毫秒)。LOG()自带这个时间戳。

SimonLiu直接基于AliOS的代码测试结果为:

  • LOG()UART0_TXD(GPIO1)输出信息
  • printf()UART1_TXD(GPIO2)输出信息

如果你需要LOG()也使用UART1_TXD(GPIO2)作为输出引脚,那么需要进行如下修改:

  1. platform\mcu\esp8266\bsp\driver\uart.c中 找到LOCAL void uart1_write_char(char c), 改为void uart1_write_char(char c),也就是移除LOCAL属性。
  2. platform\mcu\esp8266\hal\uart.c文件中,找到int32_t hal_uart_send()函数,把uart0_write_char(pdata[i]);
    修改为如下内容(感谢小徐提供的方案):
        if (uart->port == 1)
            uart0_write_char(pdata[i]);
        else
            uart1_write_char(pdata[i]);

点击查看完整源码

你可能感兴趣的:(SimonLiu的ESP8266与AliOS Things 学习教程系列之四:uart0和uart1串口打印)