完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我需要使用MQTT通讯,因此使用了esp_mqtt_proj的工程进行修改。但是现在我遇到问题了,急待解决麻烦支持一下。
1.我需要使用的场景是UART1作为LOG打印输出。 2.UART0进行引脚交换(去除启动LOG打印影响)作为透传数据串口。 但是现在的问题是。在我使用(1)uart_init_2(115200,115200)函数进行初始化时候,或者(2)uart_init(115200,115200)与UART_SetPrintPort(UART1)结合时候,LOG可以UART1打印;但是UART0的数据收发存在问题,如果是(1)方法的话,LOG会打印“FRM_ERR”等非正常的串口事件。 如果使用(2)则貌似并没有调用uart.c文件的uart0_rx_intr_handler以及uart_recvTask函数,为什么这么说呢?因为我在uart_recvTask中将uart_tx_one_char(UART0, d_tmp);注释掉,理论上无法从UART0收到数据,但是事实上,UART0依然能够收到UART0发出的数据;同时UART_RXFIFO_FULL_INT_ST、UART_RXFIFO_TOUT_INT_ST、UART_TXFIFO_EMPTY_INT_ST的if else分支并没有打印出DBG("f")、DBG("t")、DBG("e")等消息,即使修改为DBG1("f")、DBG1("t")、DBG1("e")也是如此。这就给人的感觉就是我修改driver_lib/uart.c文件并没有修改到真正调用的文件,是否存在另外的uart.c?我用的安可信集成开发环境,跳转到的文件就是driver_lib/uart.c。 这个问题让我很困惑,马房能够提供点资料告诉我。同时我注意到ESP8266_NONOS_SDK-3.0并没有提供API文档,有很多接口与之前的不一样。 |
|
相关推荐
1个回答
|
|
首先,确保您已经正确配置了UART1和UART0的引脚。在`include/user_interface.h`文件中,您可以找到UART的配置选项: ```c #define UART0 0 #define UART1 1 ``` 接下来,根据您的需求,我们需要进行以下操作: 1. 初始化UART1用于日志打印输出: ```c uart_init(115200, 115200); UART_SetPrintPort(UART1); ``` 2. 初始化UART0并交换引脚: ```c uart_init_2(115200, 115200); GPIO_Pinmux_FUN_Set(GPIO_PIN_MUX_REG, 4, 2); // TXD交换到GPIO4 GPIO_Pinmux_FUN_Set(GPIO_PIN_MUX_REG, 5, 2); // RXD交换到GPIO5 ``` 这里,我们使用了`GPIO_Pinmux_FUN_Set`函数来交换UART0的TXD和RXD引脚。请根据您的硬件连接选择合适的GPIO引脚。 3. 确保您的代码中没有其他地方错误地使用了UART0,这可能会导致数据收发问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
142个成员聚集在这个小组
加入小组529浏览 6评论
442浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
426浏览 5评论
423浏览 4评论
399浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 11:27 , Processed in 0.662439 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号