• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

下面代码定时器存在什么问题

辛迪可乐 2018-04-30 浏览量:1309

下面代码定时器存在什么问题 然后加入星期选项

/**********************************************************
* @file         user_main.c
* @brief        程序入口文件
***********************************************************/
#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "gagent_soc.h"
#include "user_devicefind.h"
#include "user_webserver.h"
#include "gizwits_product.h"
#include "driver/hal_key.h"
#if ESP_PLATFORM
#include "user_esp_platform.h"
#endif

#ifdef SERVER_SSL_ENABLE
#include "ssl/cert.h"
#include "ssl/private_key.h"
#else
#ifdef CLIENT_SSL_ENABLE
unsigned char *default_certificate;
unsigned int default_certificate_len = 0;
unsigned char *default_private_key;
unsigned int default_private_key_len = 0;
#endif
#endif

/**@name 用户定时器相关参数
* @{
*/
#define USER_TIME_MS 50                                                   	///< 50毫秒时间
LOCAL os_timer_t userTimer;                                                 ///< 用户定时器结构

#define NTP_TIME_1000MS 1000                                                   	///< 1000毫秒时间
LOCAL os_timer_t ntpTimer1000ms;                                                 ///< 用户定时器结构
/**@} */ 

/**@name 按键的相关定义
* @{
*/
#define GPIO_KEY_NUM                            4                           ///< 定义按键成员的总数。
#define KEY_0_IO_MUX                            PERIPHS_IO_MUX_GPIO2_U      ///< ESP8266 GPIO 功能
#define KEY_0_IO_NUM                            2                           ///< ESP8266 GPIO 数
#define KEY_0_IO_FUNC                           FUNC_GPIO2                  ///< ESP8266 GPIO 名称
#define KEY_1_IO_MUX                            PERIPHS_IO_MUX_GPIO0_U       ///< ESP8266 GPIO 功能
#define KEY_1_IO_NUM                            0                          ///< ESP8266 GPIO 数
#define KEY_1_IO_FUNC                           FUNC_GPIO0                 ///< ESP8266 GPIO 名称
#define KEY_2_IO_MUX                            PERIPHS_IO_MUX_GPIO4_U      ///< ESP8266 GPIO 功能
#define KEY_2_IO_NUM                            4                           ///< ESP8266 GPIO 数
#define KEY_2_IO_FUNC                           FUNC_GPIO4                  ///< ESP8266 GPIO 名称
#define KEY_3_IO_MUX                            PERIPHS_IO_MUX_GPIO5_U       ///< ESP8266 GPIO 功能
#define KEY_3_IO_NUM                            5                          ///< ESP8266 GPIO 数
#define KEY_3_IO_FUNC                           FUNC_GPIO5                 ///< ESP8266 GPIO 名称
LOCAL key_typedef_t * singleKey[GPIO_KEY_NUM];                              ///< 定义单个按键成员数组指针
LOCAL keys_typedef_t keys;                                                  ///< 定义总体按键模块结构指针。
/**@} */

/*key1按键短按处理*/
LOCAL void ICACHE_FLASH_ATTR key1ShortPress(void)
{
	STA[1]=!STA[1];
}
/*key1按键长按处理*/
LOCAL void ICACHE_FLASH_ATTR key1LongPress(void)
{
	gizwitsSetMode(WIFI_SOFTAP_MODE);
	//gizwitsSetMode(WIFI_AIRlink_MODE);
}
/*key2按键短按处理*/
LOCAL void ICACHE_FLASH_ATTR key2ShortPress(void)
{
	STA[2]=!STA[2];
}
/* key2按键长按处理*/
LOCAL void ICACHE_FLASH_ATTR key2LongPress(void)
{
	gizwitsSetMode(WIFI_SOFTAP_MODE);
}
/*key3按键短按处理*/
LOCAL void ICACHE_FLASH_ATTR key3ShortPress(void)
{
	STA[3]=!STA[3];
}
/*key3按键长按处理*/
LOCAL void ICACHE_FLASH_ATTR key3LongPress(void)
{
	gizwitsSetMode(WIFI_SOFTAP_MODE);
}
//key4按键短按处理*
LOCAL void ICACHE_FLASH_ATTR key4ShortPress(void)
{
	STA[4]=!STA[4];
}
//key4按键长按处理*
LOCAL void ICACHE_FLASH_ATTR key4LongPress(void)
{
	gizwitsSetMode(WIFI_SOFTAP_MODE);
}
/**
* 按键初始化
* @参数 无
* @返回 无
*/
LOCAL void ICACHE_FLASH_ATTR keyInit(void)
{
    singleKey[0] = keyInitOne(KEY_0_IO_NUM KEY_0_IO_MUX KEY_0_IO_FUNC
                                key1LongPress key1ShortPress);
    singleKey[1] = keyInitOne(KEY_1_IO_NUM KEY_1_IO_MUX KEY_1_IO_FUNC
                                key2LongPress key2ShortPress);
    singleKey[2] = keyInitOne(KEY_2_IO_NUM KEY_2_IO_MUX KEY_2_IO_FUNC
                                key3LongPress key3ShortPress);
    singleKey[3] = keyInitOne(KEY_3_IO_NUM KEY_3_IO_MUX KEY_3_IO_FUNC
                                key4LongPress key4ShortPress);
    keys.singleKey = singleKey;
    keyParaInit(&keys);
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U FUNC_GPIO12);//开关1
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U FUNC_GPIO13);//开关2
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U FUNC_GPIO14);//开关3
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U FUNC_GPIO15);//开关4
}

/**
* @brief user_rf_cal_sector_set
* 在Flash中使用第636扇区的(2544k ~ 2548k)存储rf_cal参数
* @参数 无
* @返回 无
*/
uint32_t ICACHE_FLASH_ATTR user_rf_cal_sector_set()
{
    return 636;
}

/**
* @brief 程序的入口函数
* 在函数中完成与用户相关的初始化
* @参数 无
* @返回 无
*/
void ICACHE_FLASH_ATTR user_init(void)
{
    uint32_t system_free_size = 0;

    wifi_station_set_auto_connect(1);
    wifi_set_sleep_type(NONE_SLEEP_T);//设置无休眠模式
    espconn_tcp_set_max_con(10);
    uart_init_3(9600115200);
    UART_SetPrintPort(1);
    GIZWITS_LOG( "---------------SDK version:%s--------------\n" system_get_sdk_version());
    GIZWITS_LOG( "system_get_free_heap_size=%d\n"system_get_free_heap_size());

    struct rst_info *rtc_info = system_get_rst_info();
    GIZWITS_LOG( "reset reason: %x\n" rtc_info->reason);
    if (rtc_info->reason == REASON_WDT_RST ||
        rtc_info->reason == REASON_EXCEPTION_RST ||
        rtc_info->reason == REASON_SOFT_WDT_RST)
    {
        if (rtc_info->reason == REASON_EXCEPTION_RST)
        {
            GIZWITS_LOG("Fatal exception (%d):\n" rtc_info->exccause);
        }
        GIZWITS_LOG( "epc1=0x%08x epc2=0x%08x epc3=0x%08x excvaddr=0x%08x depc=0x%08x\n"
                rtc_info->epc1 rtc_info->epc2 rtc_info->epc3 rtc_info->excvaddr rtc_info->depc);
    }

    if (system_upgrade_userbin_check() == UPGRADE_FW_BIN1)
    {
        GIZWITS_LOG( "---UPGRADE_FW_BIN1---\n");
    }
    else if (system_upgrade_userbin_check() == UPGRADE_FW_BIN2)
    {
        GIZWITS_LOG( "---UPGRADE_FW_BIN2---\n");
    }

    keyInit();
    
    userInit();

    gizwitsInit();  

    //使用定时
    os_timer_disarm(&userTimer);
    os_timer_setfn(&userTimer (os_timer_func_t *)userHandle NULL);
    os_timer_arm(&userTimer USER_TIME_MS 1);

    //定时获取网络时间以及处理函数
    os_timer_disarm(&ntpTimer1000ms);
    os_timer_setfn(&ntpTimer1000ms (os_timer_func_t *)getntpTimerFunc NULL);
    os_timer_arm(&ntpTimer1000ms NTP_TIME_1000MS 1);

    GIZWITS_LOG("--- system_free_size=%d ---\n" system_get_free_heap_size());
}

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:0

相关问题

问题达人换一批

下面代码定时器存在什么问题