完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用RTOS_SDK在ESP8266进行开发,我是用的是26M晶振的模块,所以需要重新配置波特率。在user_main中直接调用UART_ParamConfig()函数,编译器提示未定义。直接在user_main中调用UART_SetBaudrate(UART0,BIT_RATE_115200),反而没有提示函数未定义,但是提示宏UART0和BIT_RATE_115200没有定义,也就是说uart.h没有被包含。尝试重新编译获得libdriver.a,发现编译的结果在driver文件夹下,拷贝到lib文件夹下,没有在init_main中调用uart_init_new,我以为程序会自动调用初始化函数,没有结果。
我对gcc编译过程不是很了解,makefile也只能看个一知半解。所以我更想知道RTOS_SDK的结构是什么样的。 我的理解是源文件都已经编译成了.a库文件,通过include中的头文件进行调用。我理解的对吗?如果是这样那么libdriver.a对应的头文件是哪些? 文档中提过lib_drive文件夹是一个用来生成libdriver.a的案例,如果我把它下面的文件放在app文件夹下,编译的时候drive文件夹下的源文件是否参与编译?是否影响bin文件的内容? 程序是否有初始化的函数?例如是否会在初始化过程中初始化UART0?这个过程是在user_init之前还是在user_init之后? 如果我将driver和对应的inclue文件夹放在user文件夹下,并在user_main中包含头文件,那么user_main就可以调用driver中源文件的函数了,但这样是否造成了重复编译初始化函数造成存储空间的浪费?如果不这样,我应该怎么直接调用libdriver.a中的初始化函数? |
|
相关推荐
1个回答
|
|
在使用RTOS_SDK开发ESP8266时,初始化串口UART0的步骤如下:
1. 首先,确保你的项目中已经包含了`uart.h`头文件。在源文件的顶部添加以下代码: ```c #include "uart.h" ``` 2. 在`user_main`函数中,调用`uart_init_new`函数来初始化UART0。这个函数会配置UART0的基本参数,如波特率、数据位、停止位等。例如: ```c void user_main(void) { uart_init_new(UART0, BIT_RATE_115200, DATA_BITS_8, STOP_BITS_1, NONE_BITS); } ``` 3. 接下来,使用`UART_SetBaudrate`函数来设置UART0的波特率。例如,将波特率设置为115200: ```c UART_SetBaudrate(UART0, BIT_RATE_115200); ``` 4. 确保你的`Makefile`文件中已经包含了`driver`文件夹,以便编译器能够找到`uart.h`和相关的库文件。在`Makefile`中添加以下代码: ```makefile COMPONENT_SRCDIRS := $(COMPONENT_PATH)/driver ``` 5. 重新编译你的项目,生成新的`libdriver.a`文件。 6. 将生成的`libdriver.a`文件复制到`lib`文件夹下。 7. 确保你的项目链接了`libdriver.a`库。在`Makefile`中添加以下代码: ```makefile COMPONENT_ADD_LDFLAGS += -ldriver ``` 8. 重新编译并上传程序到ESP8266模块。 按照以上步骤,你应该能够成功初始化UART0并设置波特率。如果仍然遇到问题,请检查你的`Makefile`配置和源文件中的包含路径是否正确。 |
|
|
|
只有小组成员才能发言,加入小组>>
1149 浏览 1 评论
582浏览 6评论
480浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
465浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 00:22 , Processed in 0.867158 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号