ハンドルはesp 8266を使ってスマートプラグを作ります-ソフトウェア編


前にすでにハードウェア编の内容を书いて、ここのソフトウェア编はあまり内容を书いていません.ここでは主にみんなにテストのコードを提供して、自分のハードウェアが正常に働いているかどうかをテストします.もし自分が他の机能が必要なら、楽鑫公式サイトのSDK开発関连のチュートリアルを参考にすることができます.まず完全なテストコードをつけて、コードは比较的に简単で、见るとすぐに分かりました.ここで说明して、コードは私のところはテストを経て、正常にコンパイルして焼き取ることができて、コンパイル环境はNONOSバージョンのSDKで、ツールは公式サイトの仮想机の环境で、もしプログラムのコンパイルが间违っていることを発见したら、自分のSDKバージョンとコンパイル环境をチェックしてください.
/******************************************************************************
     * Copyright 2013-2014 Espressif Systems
     *
*******************************************************************************/
#include "ets_sys.h"
#include "os_type.h"
#include "osapi.h"
#include "mem.h"
#include "user_interface.h"
     
 
LOCAL os_timer_t change_timer;



#define SWITCH_Pin_NUM         0
#define SWITCH_Pin_FUNC        FUNC_GPIO0
#define SWITCH_Pin_MUX         PERIPHS_IO_MUX_GPIO0_U

static bool status = true;


/******************************************************************************
 * FunctionName : user_rf_cal_sector_set
 * Description  : SDK just reversed 4 sectors, used for rf init data and paramters.
 *                We add this function to force users to set rf cal sector, since
 *                we don't know which sector is free in user's application.
 *                sector map for last several sectors : ABCCC
 *                A : rf cal
 *                B : rf init data
 *                C : sdk parameters
 * Parameters   : none
 * Returns      : rf cal sector
*******************************************************************************/
uint32 ICACHE_FLASH_ATTR user_rf_cal_sector_set(void)
{
    enum flash_size_map size_map = system_get_flash_size_map();
    uint32 rf_cal_sec = 0;

    switch (size_map) {
        case FLASH_SIZE_4M_MAP_256_256:
            rf_cal_sec = 128 - 5;
            break;

        case FLASH_SIZE_8M_MAP_512_512:
            rf_cal_sec = 256 - 5;
            break;

        case FLASH_SIZE_16M_MAP_512_512:
        case FLASH_SIZE_16M_MAP_1024_1024:
            rf_cal_sec = 512 - 5;
            break;

        case FLASH_SIZE_32M_MAP_512_512:
        case FLASH_SIZE_32M_MAP_1024_1024:
            rf_cal_sec = 1024 - 5;
            break;

        default:
            rf_cal_sec = 0;
            break;
    }

    return rf_cal_sec;
}


 /******************************************************************************
  * FunctionName : user_rf_pre_init
  * Description  : 
  * Parameters   : 
  *                
  * Returns      : none
 *******************************************************************************/
void ICACHE_FLASH_ATTR user_rf_pre_init(void){}


void ICACHE_FLASH_ATTR user_change(void){
if( status == true )
    {
        status = false;
        GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
        os_printf("---key is false
"); } else { status = true; GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 0); os_printf("---key is true
"); } } void ICACHE_FLASH_ATTR user_test(void){ os_printf("---User Test ~~~~~
"); os_timer_disarm(&change_timer); os_timer_setfn(&change_timer, (os_timer_func_t *)user_change, NULL); os_timer_arm(&change_timer, 3000, 1); } /****************************************************************************** * FunctionName : user_init * Description : entry of user application, init user function here * Parameters : none * Returns : none *******************************************************************************/ void user_init(void) { os_printf("SDK version:%s
", system_get_sdk_version()); PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO2); GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1); user_test(); }
以上のコードは、タイマ方式で3秒ごとにリレーの状態を切り替え、リレーが正常に動作しているかどうかを確認します.