搜索
bottom↓
回复: 10

ESP8266-SDK-串口开发求助

[复制链接]

出0入0汤圆

发表于 2019-2-18 10:33:55 | 显示全部楼层 |阅读模式
SDK版本:esp8266_nonos_sdk_v1.5.4
1、system_uart_swap()函数要放到什么地方才能屏蔽上电打印呢?
2、使用UART1打印日志,将官网的程序复制过来,总是出现错误。
官网程序:
void ICACHE_FLASH_ATTR uart_init_new(void)
{
          // Wait for FIFOs to be emptied
            UART_WaitTxFifoEmpty(UART0);
            UART_WaitTxFifoEmpty(UART1);
            // Configure UART settings
            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(UART0, &uart_config);
            UART_IntrConfTypeDef uart_intr;
            uart_intr.UART_IntrEnMask = UART_RXFIFO_TOUT_INT_ENA | UART_FRM_ERR_INT_ENA | UART_RXFIFO_FULL_INT_ENA;
            uart_intr.UART_RX_FifoFullIntrThresh = 100;
            uart_intr.UART_RX_TimeOutIntrThresh = 2;
            uart_intr.UART_TX_FifoEmptyIntrThresh = 20;
            UART_IntrConfig(UART0, &uart_intr);
            // Set UART1 for printing
            UART_SetPrintPort(UART1);
            // Register interrupt handler
            UART_intr_handler_register(uart0_rx_intr_handler);
            ETS_UART_INTR_ENABLE();

错误:
user_main.c: In function 'uart_init_new':
user_main.c:38:13: error: unknown type name 'UART_ConfigTypeDef'
             UART_ConfigTypeDef uart_config;
             ^
user_main.c:39:24: error: request for member 'baud_rate' in something not a structure or union
             uart_config.baud_rate  = BIT_RATE_74880;
                        ^
user_main.c:40:24: error: request for member 'data_bits' in something not a structure or union
             uart_config.data_bits   = UART_WordLength_8b;
                        ^
user_main.c:40:39: error: 'UART_WordLength_8b' undeclared (first use in this function)
             uart_config.data_bits   = UART_WordLength_8b;
                                       ^
user_main.c:40:39: note: each undeclared identifier is reported only once for each function it appears in
user_main.c:41:24: error: request for member 'parity' in something not a structure or union
             uart_config.parity     = USART_Parity_None;
                        ^
user_main.c:41:38: error: 'USART_Parity_None' undeclared (first use in this function)
             uart_config.parity     = USART_Parity_None;
                                      ^
user_main.c:42:24: error: request for member 'stop_bits' in something not a structure or union
             uart_config.stop_bits   = USART_StopBits_1
                        ^
user_main.c:42:39: error: 'USART_StopBits_1' undeclared (first use in this function)
             uart_config.stop_bits   = USART_StopBits_1
                                       ^
user_main.c:43:13: error: expected ';' before 'uart_config'
             uart_config.flow_ctrl   = USART_HardwareFlowControl_None;
             ^
user_main.c:44:24: error: request for member 'UART_RxFlowThresh' in something not a structure or union
             uart_config.UART_RxFlowThresh = 120;
                        ^
user_main.c:45:24: error: request for member 'UART_InverseMask' in something not a structure or union
             uart_config.UART_InverseMask = UART_None_Inverse;
                        ^
user_main.c:47:13: error: unknown type name 'UART_IntrConfTypeDef'
             UART_IntrConfTypeDef uart_intr;
             ^
user_main.c:48:22: error: request for member 'UART_IntrEnMask' in something not a structure or union
             uart_intr.UART_IntrEnMask = UART_RXFIFO_TOUT_INT_ENA | UART_FRM_ERR_INT_ENA | UART_RXFIFO_FULL_INT_ENA;
                      ^
user_main.c:49:22: error: request for member 'UART_RX_FifoFullIntrThresh' in something not a structure or union
             uart_intr.UART_RX_FifoFullIntrThresh = 100;
                      ^
user_main.c:50:22: error: request for member 'UART_RX_TimeOutIntrThresh' in something not a structure or union
             uart_intr.UART_RX_TimeOutIntrThresh = 2;
                      ^
user_main.c:51:22: error: request for member 'UART_TX_FifoEmptyIntrThresh' in something not a structure or union
             uart_intr.UART_TX_FifoEmptyIntrThresh = 20;
                      ^
user_main.c:56:40: error: 'uart0_rx_intr_handler' undeclared (first use in this function)
             UART_intr_handler_register(uart0_rx_intr_handler);

出0入0汤圆

 楼主| 发表于 2019-2-18 10:35:14 | 显示全部楼层
1、第一个问题试了好多地方,上电还是会打印调试信息。
2、第二个感觉缺少头文件,但是串口的头文件已经添加,难道是版本问题?
希望大神指导。

出0入17汤圆

发表于 2019-2-18 11:48:11 | 显示全部楼层
刚上电的一段系统log ,屏蔽不了 。

出0入0汤圆

发表于 2019-2-18 14:49:25 | 显示全部楼层
现在都3.0了,为什么还要用那么老的版本?

出0入0汤圆

 楼主| 发表于 2019-2-18 14:52:24 | 显示全部楼层
caoxuedong 发表于 2019-2-18 14:49
现在都3.0了,为什么还要用那么老的版本?

去哪里下载呢?我是在安信可官网下的

出0入4汤圆

发表于 2019-2-18 14:56:40 | 显示全部楼层
cumthe 发表于 2019-2-18 14:52
去哪里下载呢?我是在安信可官网下的

乐鑫官网有的。。。。
https://www.espressif.com/zh-han ... esp8266ex/resources

出0入0汤圆

发表于 2019-2-18 14:57:54 | 显示全部楼层
上电打印是屏蔽不了的,system_uart_swap 的作用是将串口的引脚映射到另外两个脚,所以你等开机打印打完后调用,并实际把串口接在映射过去的那两个脚来使用

出0入0汤圆

发表于 2019-2-18 17:16:45 | 显示全部楼层
如何屏蔽上电打印?
U0TXD 默认上电有系统打印,对此敏敏感应用可通过 UART 的内部引脚交换功能,在初始化的时
候,调用 system_uart_swap 函数,将 U0TXD、U0RXD 分别与 U0RTS(MTDO/GPIO15),U0CTS
(MTCK/GPIO13)交换来屏蔽该上电的系统打印。
交换后,硬件上的下载管脚还是使用 U0TXD + U0RXD,通信时需要将 MTDO 对应接到 MCU 的
RXD,MTCK 对应接到 MCU 的 TXD。
就是说上电打印还是会从U0TXD输出,通信使用MTDO,MTCK,这样间接实现屏蔽上电打印。

出0入0汤圆

 楼主| 发表于 2019-2-19 09:59:25 | 显示全部楼层
laujc 发表于 2019-2-18 14:56
乐鑫官网有的。。。。
https://www.espressif.com/zh-hans/products/hardware/esp8266ex/resources

收到。多谢

出0入0汤圆

 楼主| 发表于 2020-2-7 21:53:52 | 显示全部楼层
caoxuedong 发表于 2019-2-18 17:16
如何屏蔽上电打印?
U0TXD 默认上电有系统打印,对此敏敏感应用可通过 UART 的内部引脚交换功能,在初始化 ...

这是官方的文档上说的。但是实际测试后发现是屏蔽不掉的

出0入0汤圆

发表于 2020-3-18 16:33:11 | 显示全部楼层
bootrom的输出是无法屏蔽的,当然如果你不想看到乱码的话可以换40MHz的晶振
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-18 21:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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