完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用 esp-open-sdk。
AT 命令适用于默认的 esp 软件(或使用 Espressif bin 文件刷入 esp 后)。 每次我用自己的程序覆盖默认软件时,esp 都不会对 AT 命令做出反应。 你知道如何在你自己的程序中启用AT模块吗? 可能吗? 乐鑫 SDK NONOS SDK API 文档介绍了 at_custom.h 和 at_init(),但看起来这是为了开发自定义 AT 命令。 我不想实现任何自定义 AT 命令,我只想通过 AT 命令(连接到接入点等)在我自己的程序中公开标准功能。 调用 at_init() 是正确的方法吗? 我试图自己验证它,但我面临以下问题。 这是我的草图: #include #include #include void ICACHE_FLASH_ATTR user_init(void) { uart_div_modify(0, UART_CLK_FREQ / 115200); os_delay_us(1000); at_init(); at_port_print("rnAT module initializedrn"); } 这是我在构建时遇到的错误: xtensa-lx106-elf-gcc -I. -DICACHE_FLASH -mlongcalls -c -o user_main.o user_main.c xtensa-lx106-elf-gcc -Teagle.app.v6.ld user_main.o -nostdlib -Wl,--gc-sections -Wl,--start-group -lgcc -lmain -lnet80211 -lwpa -llwip -lpp -lphy -lc -lat -lairkiss -lwps -lsmartconfig -lespnow -lssl -Wl,--end-group -o user_main /opt/esp-open-sdk/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/../../../../xtensa-lx106-elf/bin/ld:user_main部分“.text”不适合区域“iram1_0_seg” /opt/esp-open-sdk/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/../../../../xtensa-lx106-elf/bin/ld:区域“iram1_0_seg”溢出 3641 字节 collect2:错误:ld 返回 1 退出状态 : recipe for target 'user_main' failed make: *** [user_main] Error 1 |
|
相关推荐
1个回答
|
|
要在您的程序中启用AT模块,您需要遵循以下步骤。请注意,这里假设您已经熟悉ESP8266/ESP32开发和esp-open-sdk。 1. 首先,确保您的开发环境已经设置好,并且已经安装了esp-open-sdk。 2. 在您的程序中包含必要的头文件。对于AT模块,您需要包含以下头文件: ```c #include "c_types.h" #include "at.h" #include "osapi.h" ``` 3. 在您的程序中初始化AT模块。您可以使用`at_init()`函数来初始化AT模块。将此函数调用放在程序的初始化部分,例如在`user_init()`函数中: ```c void user_init(void) { // 其他初始化代码 at_init(); // 初始化AT模块 } ``` 4. 配置AT模块。在初始化AT模块之后,您需要配置它以接收AT命令。这通常涉及到设置UART接口的波特率和其他参数。您可以使用`os_printf()`函数来发送AT命令: ```c os_printf("AT+UART_CUR=115200,8,1,0,3rn"); ``` 5. 处理AT命令响应。在发送AT命令后,您可能需要处理来自ESP模块的响应。您可以使用`at_port_recv()`函数来接收数据: ```c #define AT_RECV_BUFF_SIZE 256 char at_recv_buff[AT_RECV_BUFF_SIZE]; int recv_len = at_port_recv(at_recv_buff, AT_RECV_BUFF_SIZE, 1000); if (recv_len > 0) { at_recv_buff[recv_len] = ' |