当前位置:首页 > 服务器资讯

Esp8266入门之一串口输出 Helloword 程序

2022-01-06 11:33:58 作者: 来源: 阅读:162 评论:0

简介 51CTO社区编辑加盟指南,欢迎关注!--> WOT全球技术创新大会2022,门票6折抢购中!购票立减2320元!--> 本文转载自微信公众号「嵌入式小书虫」,作者FledgingSu 支离苏。转载本文请联系嵌入式小书虫公众号。今天开始讲一款物联网WiFi芯片,es......

51CTO社区编辑加盟指南,欢迎关注!

--> WOT全球技术创新大会2022,门票6折抢购中!购票立减2320元!-->

本文转载自微信公众号「嵌入式小书虫」,作者FledgingSu 支离苏。转载本文请联系嵌入式小书虫公众号。

今天开始讲一款物联网WiFi芯片,esp8266。

之前看到有很多小伙伴只是用AT指令来操作8266进行联网。其实乐鑫官网也给我们提供了SDK开发的环境。

下面讲一下SDK开发环境,并建立第一个helloword程序。

开发环境如下图:

双击打开后,设置工作空间,点击下一步。

点击OK后进入欢迎界面,如下图:

叉掉之后就可以了,如下图:

导入我们的第一个程序helloworld,右键选择 Import

点开 C/C++

选择第3个,点击Next

导入工程并选择 Cygwin GCC,点击Finish.

导入成功后如下图:

打开APP目录 ->user ->user_main.c(双击就可以)

编写我们的helloworld程序

  1. void user_init()   //程序入口 
  2.   ||初始化串口 
  3.   uart_init(115200,115200); 
  4.   ||串口输出Hello world 
  5.   uart0_sendStr("\r\n Hello world!\r\n"); 
  6. 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!,为什么下面还打印了一堆东西呢?
  • 这时候需要看下串口初始化程序

我把串口初始化 程序复制到下面了

  1. uart_init(UartBautRate uart0_br, UartBautRate uart1_br) 
  2.     /*this is a example to process uart data from task,please change the priority to fit your application task if exists*/ 
  3.     system_os_task(uart_recvTask, uart_recvTaskPrio, uart_recvTaskQueue, uart_recvTaskQueueLen);  //demo with a task to process the uart data 
  4.      
  5.     UartDev.baut_rate = uart0_br; 
  6.     uart_config(UART0); 
  7.     UartDev.baut_rate = uart1_br; 
  8.     uart_config(UART1); 
  9.     ETS_UART_INTR_ENABLE(); 
  10.      
  11.     #if UART_BUFF_EN 
  12.     pTxBuffer = Uart_Buf_Init(UART_TX_BUFFER_SIZE); 
  13.     pRxBuffer = Uart_Buf_Init(UART_RX_BUFFER_SIZE); 
  14.     #endif 
  15.     /*option 1: use default print, output from uart0 , will wait some time if fifo is full */ 
  16.     //do nothing... 
  17.  
  18.     /*option 2: output from uart1,uart1 output will not wait , just for output debug info */ 
  19.     /*os_printf output uart data via uart1(GPIO2)*/ 
  20.     //os_install_putc1((void *)uart1_write_char);    //use this one to output debug information via uart1 // 
  21.  
  22.     /*option 3: output from uart0 will skip current byte if fifo is full now... */ 
  23.     /*see uart0_write_char_no_wait:you can output via a buffer or output directly */ 
  24.     /*os_printf output uart data via uart0 or uart buffer*/ 
  25.     //os_install_putc1((void *)uart0_write_char_no_wait);  //use this to print via uart0 
  26.      
  27.     #if UART_SELFTEST&UART_BUFF_EN 
  28.     os_timer_disarm(&buff_timer_t); 
  29.     os_timer_setfn(&buff_timer_t, uart_test_rx , NULL);   //a demo to process the data in uart rx buffer 
  30.     os_timer_arm(&buff_timer_t,10,1); 
  31.     #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行的注释打开就可以了,如下
  1. os_install_putc1((void *)uart1_write_char); 

修改之后我们再编译、下载、打印看下输出是否正确。

如图,串口助手显示正确

好了,esp8266的第一个程序就讲到这里,下一篇继续。


标签:uart  串口  下图  程序  点击  

相关评论

本栏推荐