向智者致敬首页投稿(暂停使用,暂停投稿)华南理工大学无线电爱好者协会软件小组

ESP8266学习笔记(三)

2016-10-10  本文已影响0人  JaydenOnly

上一次讲了ESP8266这块芯片的深度开发的准备工作和有关编译指导文件makefile的一些要点,那么这一次就来讲讲关于SDK的正式开发吧。

程序入口 app.png

首先,在工程文件夹下找到app文件夹,再打开user文件夹,如上图所示,从user文件夹中找到user_main.c这个文件,这就是我们程序的主程序了。打开文件,找到user_init(),这就是我们程序的入口函数了(SDK1.5版本以上的还有user_rf_pre_init()这个函数,不过我们的主程序还是在user_init()里面编辑就好,user_rf_pre_init()这个函数可以留空函数)。

串口设置

串口调试可以说是SDK开发的一个必要环节,只有通过串口通讯环节,我们才有了和芯片沟通的能力,所以串口设置是我比较推荐在user_init()里面最先编写的部分。下面是几个常用函数:

IO口设置

例子

如果我们要使用GPIO12这个IO口,只需要配置以下几步
// Use MTDI pin as GPIO12.
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
//输出高电平
GPIO_OUTPUT_SET(FUNC_GPIO12, 1);
//配置输入
GPIO_DIS_OUTPUT(FUNC_GPIO12);
//获得GPIO电平
uin16 status=GPIO_INPUT_GET(FUNC_GPIO12);
//配置GPIO中断处理函数:
ETS_GPIO_INTR_ATTACH(func, arg)
使用方法:先定义一个GPIO中断处理函数,arg如果没有参数直接输入NULL
void GPIO_INTER(void)
{
......//这一部分可以加入自己想要响应中断的函数;
在 GPIO 中断处理函数内,需要做如下操作来清除响应位的中断状态:
uint32 gpio_status;
gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);
//clear interrupt status
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);
}
ETS_GPIO_INTR_ATTACH(GPIO_INTER, NULL); //注册 GPIO 中断处理函数

WIFI设置

由于ESP8266是一块wifi芯片,所以wifi的配置是少不了的。
芯片的wifi工作模式有以下三种:

  1. STATION_MODE(客户端模式,也就是主动去连接路由器)
  2. SOFTAP_MODE(服务器模式,也就是可以充当路由器,等其他设备连接)
  3. STATIONAP_MODE(主从一体模式,也就是俗称的wifi中继功能)

常用的函数是下列几个:

以下为wifi配置的例子,只需修改SSID和PASSWORD即可工作:

<pre><code>user_set_station_config(void)
{

// Wifi configuration 

char ssid[32] = SSID;   //SSID为输入的你的路由名称

char password[64] = PASSWORD;  //PASSWORD为输入的wifi密码

struct station_config stationConf; 

//need not mac address
stationConf.bssid_set = 0; 

//Set ap settings 

os_memcpy(&stationConf.ssid, ssid, 32); 

os_memcpy(&stationConf.password, password, 64); 

wifi_station_set_config(&stationConf); 

//set a timer to check whether got ip from router succeed or not.

os_timer_disarm(&client_timer);

os_timer_setfn(&client_timer, (os_timer_func_t *)user_check_ip, NULL);

os_timer_arm(&client_timer, 100, 0);

}</pre></code>
在user_init()中:
<pre><code>void user_init(void)
{

//Set uart port

uart_init(115200,9600);
os_printf("SDK version:%s\n", system_get_sdk_version());

//Set station mode 
wifi_set_opmode(STATION_MODE); 

//ESP8266 connect to router
user_set_station_config();

}</pre></code>

总结

通过今天的介绍,大家应该已经了解了SDK的基础工作函数了,而我们的ESP8266已经可以顺利地连上路由器了,当然连上路由器仅仅是基础,关于后续的网络通讯开发我们下次再叙。

上一篇 下一篇

猜你喜欢

热点阅读