本文转载自微信公众号「嵌入式小书虫」,作者FledgingSu 支离苏。转载本文请联系嵌入式小书虫公众号。
今天开始讲一款物联网WiFi芯片,esp8266。
之前看到有很多小伙伴只是用AT指令来操作8266进行联网。其实乐鑫官网也给我们提供了SDK开发的环境。
下面讲一下SDK开发环境,并建立第一个helloword程序。
开发环境如下图:
双击打开后,设置工作空间,点击下一步。
点击OK后进入欢迎界面,如下图:
叉掉之后就可以了,如下图:
导入我们的第一个程序helloworld,右键选择 Import
点开 C/C++
选择第3个,点击Next
导入工程并选择 Cygwin GCC,点击Finish.
导入成功后如下图:
打开APP目录 ->user ->user_main.c(双击就可以)
编写我们的helloworld程序
- void user_init() //程序入口
- {
- ||初始化串口
- uart_init(115200,115200);
- ||串口输出Hello world
- uart0_sendStr("\r\n Hello world!\r\n");
- }
- void user_rf_pre_init() {
- }
- user_init()是入口函数
- user_rf_pre_init()函数也是必须要有的
程序编写完成后,进行编译
首先点击Clean Project
然后点击Build Project
编译完成如下图所示,在Console中显示Build Finished 。
接下来就可以烧写程序了,
烧写文件路径F:\cx\esp8266\Helloworld\bin
在Helloworld\bin目录下。
下面是烧写文件对应的地址:
eagle.flash.bin | 0x00000 |
eagle.irom0text.bin | 0x40000 |
esp_init_data_default.bin | 0x7c000 |
blank.bin | 0x7e000 |
打开flash烧写软件,如下图,在Config中选择好文件。
开始烧写,选择好串口,点击Flash
等待烧写完成,左下方出现一个绿色的对勾
打开串口助手接收数据,复位esp8266,如下图
- 我们只打印了Hello world!,为什么下面还打印了一堆东西呢?
- 这时候需要看下串口初始化程序
我把串口初始化 程序复制到下面了
- uart_init(UartBautRate uart0_br, UartBautRate uart1_br)
- {
- /*this is a example to process uart data from task,please change the priority to fit your application task if exists*/
- system_os_task(uart_recvTask, uart_recvTaskPrio, uart_recvTaskQueue, uart_recvTaskQueueLen); //demo with a task to process the uart data
- UartDev.baut_rate = uart0_br;
- uart_config(UART0);
- UartDev.baut_rate = uart1_br;
- uart_config(UART1);
- ETS_UART_INTR_ENABLE();
- #if UART_BUFF_EN
- pTxBuffer = Uart_Buf_Init(UART_TX_BUFFER_SIZE);
- pRxBuffer = Uart_Buf_Init(UART_RX_BUFFER_SIZE);
- #endif
- /*option 1: use default print, output from uart0 , will wait some time if fifo is full */
- //do nothing...
- /*option 2: output from uart1,uart1 output will not wait , just for output debug info */
- /*os_printf output uart data via uart1(GPIO2)*/
- //os_install_putc1((void *)uart1_write_char); //use this one to output debug information via uart1 //
- /*option 3: output from uart0 will skip current byte if fifo is full now... */
- /*see uart0_write_char_no_wait:you can output via a buffer or output directly */
- /*os_printf output uart data via uart0 or uart buffer*/
- //os_install_putc1((void *)uart0_write_char_no_wait); //use this to print via uart0
- #if UART_SELFTEST&UART_BUFF_EN
- os_timer_disarm(&buff_timer_t);
- os_timer_setfn(&buff_timer_t, uart_test_rx , NULL); //a demo to process the data in uart rx buffer
- os_timer_arm(&buff_timer_t,10,1);
- #endif
- }
- 第17行: use default print, output from uart0 , will wait some time if fifo is full
19~21行:output from uart1,uart1 output will not wait , just for output debug info
os_printf output uart data via uart1(GPIO2)
os_install_putc1((void *)uart1_write_char); //use this one to output debug information via uart1
- 我们看注释可以知道,默认输出是uart0,如果我们想把调试信息从uart1输出,把第21行的注释打开就可以了,如下
- os_install_putc1((void *)uart1_write_char);
修改之后我们再编译、下载、打印看下输出是否正确。
如图,串口助手显示正确
好了,esp8266的第一个程序就讲到这里,下一篇继续。