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

欢迎加入交流群:ESP8266 AliOS Things 群 号: 107723112
系列文章目录:
SimonLiu的ESP8266与AliOS Things 学习教程系列目录

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]);

点击查看完整源码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值