收藏官网首页
查看: 42754|回复: 9

[求助] 怎么用串口1 输出os_printf内容呢?

6

主题

33

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
跳转到指定楼层
楼主
发表于 2016-12-30 09:49:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
校园创客福利
本帖最后由 1112 于 2016-12-31 11:15 编辑

问题:怎么用串口1 输出os_printf内容呢?
1、我是这样尝试修改的:
  1. /**
  2. * @brief 程序入口函数

  3. * 在该函数中完成用户相关的初始化
  4. * @param none
  5. * @return none
  6. */
  7. void ICACHE_FLASH_ATTR user_init(void)
  8. {
  9.     uint32 system_free_size = 0;

  10.     wifi_station_set_auto_connect(1);
  11.     wifi_set_sleep_type(NONE_SLEEP_T);//set none sleep mode
  12.     espconn_tcp_set_max_con(10);
  13.     uart_init_3(9600,115200);
  14.     UART_SetPrintPort(1);  <b>//串口1</b>
  15.     os_printf( "---------------SDK version:%s--------------\n", system_get_sdk_version());
  16.     os_printf( "system_get_free_heap_size=%d\n",system_get_free_heap_size());
复制代码
  1. uart_init_3(UartBautRate uart0_br, UartBautRate uart1_br)
  2. {
  3.     // rom use 74880 baut_rate, here reinitialize
  4.     UartDev.baut_rate = uart0_br;
  5.     UartDev.exist_parity = STICK_PARITY_DIS;
  6.     UartDev.parity = NONE_BITS;
  7.     UartDev.stop_bits = ONE_STOP_BIT;
  8.     UartDev.data_bits = EIGHT_BITS;

  9.     uart_config(UART0);
  10.     UartDev.baut_rate = uart1_br;
  11.     uart_config(UART1);
  12.     ETS_UART_INTR_ENABLE();

  13.     // install uart1 putc callback
  14.    // os_install_putc1((void *)uart1_write_char);//print output at UART1
  15. }
复制代码

  1. UART_SetPrintPort(uint8 uart_no)
  2. {
  3.     if(uart_no==1){
  4.         os_install_putc1(uart1_write_char);
  5.     }else{
  6.         /*option 1: do not wait if uart fifo is full,drop current character*/
  7.         os_install_putc1(uart0_write_char_no_wait);
  8.     /*option 2: wait for a while if uart fifo is full*/
  9.     os_install_putc1(uart0_write_char);
  10.     }
  11. }
复制代码


2、接线
RX--GPIO2      
GND---GND      
3V---3V
3、波特率:74880
4、串口输出:

这样os_printf没有打印出内容,换串口0一切正常。

各位大神,这怎么解决?
沙发
发表于 2016-12-30 10:17:12 | 只看该作者
参考一下第42点的os_printf这条函数~

2c-esp8266_non_os_sdk_api_reference_cn.pdf

1.35 MB, 下载次数: 119, 下载积分: 威望 1

6

主题

49

帖子

1245

积分

金牌会员

Rank: 6Rank: 6

积分
1245
板凳
发表于 2016-12-30 10:27:41 | 只看该作者
前面是  设置 115200,  后面是用  74800 , 能输出吗

6

主题

33

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
地板
 楼主| 发表于 2016-12-30 10:48:01 | 只看该作者
本帖最后由 1112 于 2016-12-30 10:49 编辑
yCat 发表于 2016-12-30 10:17
参考一下第42点的os_printf这条函数~

看了文档了,我是这样改的:
  1. uart_init_3(UartBautRate uart0_br, UartBautRate uart1_br)
  2. {
  3.     // rom use 74880 baut_rate, here reinitialize
  4.     UartDev.baut_rate = uart0_br;
  5.     UartDev.exist_parity = STICK_PARITY_DIS;
  6.     UartDev.parity = NONE_BITS;
  7.     UartDev.stop_bits = ONE_STOP_BIT;
  8.     UartDev.data_bits = EIGHT_BITS;

  9.     uart_config(UART0);
  10.     UartDev.baut_rate = uart1_br;
  11.     uart_config(UART1);
  12.     ETS_UART_INTR_ENABLE();

  13.     // install uart1 putc callback//添加uart1
  14.     os_install_putc1((void *)uart1_write_char);//print output at UART1
  15. }
复制代码

  1. UART_SetPrintPort(uint8 uart_no)
  2. {
  3.     if(uart_no==1){
  4.       //  os_install_putc1(uart1_write_char);
  5.         os_install_putc1((void *)uart1_write_char); //添加uart1
  6.     }else{
  7.         /*option 1: do not wait if uart fifo is full,drop current character*/
  8.         os_install_putc1(uart0_write_char_no_wait);
  9.     /*option 2: wait for a while if uart fifo is full*/
  10.     os_install_putc1(uart0_write_char);
  11.     }
  12. }
复制代码


实测也没有正确输出。

6

主题

33

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
5#
 楼主| 发表于 2016-12-30 11:19:23 | 只看该作者
注册成为机智云开发者,手机加虚拟设备快速开发
szuser 发表于 2016-12-30 10:27
前面是  设置 115200,  后面是用  74800 , 能输出吗

这确实也有点奇怪,但改成74880时 实际上已经输出上面我贴的内容,只是没有打印os_printf的内容

点评

ESP8266 开机时 是 74880, 然后就改为用户设定的值,  详情 回复 发表于 2016-12-30 12:25

6

主题

49

帖子

1245

积分

金牌会员

Rank: 6Rank: 6

积分
1245
6#
发表于 2016-12-30 12:25:36 | 只看该作者
1112 发表于 2016-12-30 11:19
这确实也有点奇怪,但改成74880时 实际上已经输出上面我贴的内容,只是没有打印os_printf的内容 ...

ESP8266 开机时 是 74880, 然后就改为用户设定的值,

6

主题

33

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
7#
 楼主| 发表于 2016-12-30 12:32:03 | 只看该作者
szuser 发表于 2016-12-30 12:25
ESP8266 开机时 是 74880, 然后就改为用户设定的值,

嗯,但是我这个按照文档改了,为啥还没有办法打印出内容呢?

56

主题

144

帖子

1066

积分

金牌会员

Rank: 6Rank: 6

积分
1066
QQ
8#
发表于 2016-12-30 19:21:58 | 只看该作者
GAgent esp8266 日志的debug 串口就已经是uart1 了。
楼主你修改了之后还是没输出,可能是你修改串口的设置在机智云修改参数之前,所以最后还是被修改为机智云默认的参数了。

6

主题

33

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
9#
 楼主| 发表于 2016-12-30 21:49:41 | 只看该作者
本帖最后由 1112 于 2016-12-30 21:58 编辑
alex.lin 发表于 2016-12-30 19:21
GAgent esp8266 日志的debug 串口就已经是uart1 了。
楼主你修改了之后还是没输出,可能是你修改串口的设置 ...

我是直接拿宠物屋源码调试uart1的。改的地方如下:
user_init中
    uart_init_3(9600,115200);
    UART_SetPrintPort(1);
uart.c中  365行 去掉注释
    // install uart1 putc callback
    os_install_putc1((void *)uart1_write_char);//print output at UART1


其他地方都没动,但就是无法输出

4

主题

16

帖子

167

积分

注册会员

Rank: 2

积分
167
10#
发表于 2017-11-23 17:10:29 | 只看该作者
免费使用STM32、APP自动代码生成工具
加入这段代码,我之前 测试过只加UART_SetPrintPort(UART1);这句不行
请加入下列代码
UART_ConfigTypeDef uart_config;
            uart_config.baud_rate    = BIT_RATE_74880;
            uart_config.data_bits     = UART_WordLength_8b;
            uart_config.parity          = USART_Parity_None;
            uart_config.stop_bits     = USART_StopBits_1;
            uart_config.flow_ctrl      = USART_HardwareFlowControl_None;
            uart_config.UART_RxFlowThresh = 120;
            uart_config.UART_InverseMask = UART_None_Inverse;
            UART_ParamConfig(UART1, &uart_config);
            UART_SetPrintPort(UART1);
就可以在TXD1引脚输出调试信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

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