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

机智云短按控制继电器代码这样写上报正常吗

辛迪可乐 2018-05-15 浏览量:1305
机智云短按控制继电器代码这样写上报正常吗​
bool SWFlag;
/**@} */ 

/**@name Key related definitions 
* @{
*/
#define GPIO_KEY_NUM                            1                           ///< Defines the total number of key members
#define KEY_0_IO_MUX                            PERIPHS_IO_MUX_GPIO0_U      ///< ESP8266 GPIO function
#define KEY_0_IO_NUM                            0                           ///< ESP8266 GPIO number
#define KEY_0_IO_FUNC                           FUNC_GPIO0                  ///< ESP8266 GPIO name
LOCAL key_typedef_t * singleKey[GPIO_KEY_NUM];                              ///< Defines a single key member array pointer
LOCAL keys_typedef_t keys;                                                  ///< Defines the overall key module structure pointer    

/**@} */

LOCAL void ICACHE_FLASH_ATTR key1ShortPress(void)
{
if(SWFlag)
{
GPIO_OUTPUT_SET(GPIO_ID_PIN(2) 1);
SWFlag=0;
currentDataPoint.valueswitchcontrol = 0;
}
else
{
GPIO_OUTPUT_SET(GPIO_ID_PIN(2) 0);
SWFlag=1;
currentDataPoint.valueswitchcontrol = 1;
}
}
LOCAL void ICACHE_FLASH_ATTR keyInit(void)
{
    singleKey[0] = keyInitOne(KEY_0_IO_NUM KEY_0_IO_MUX KEY_0_IO_FUNC
                                key1LongPress key1ShortPress);
    keys.singleKey = singleKey;
    keyParaInit(&keys);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U FUNC_GPIO2);
}
static void gpio_interrup_1(void)
{
    uint32_t gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);
    GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS gpio_status);
    ETS_GPIO_INTR_DISABLE();
    GIZWITS_LOG("inter interrup GPIO!\r\n");
    if(currentDataPoint.valueswitchcontrol == 0x00)
    {
        currentDataPoint.valueswitchcontrol = 0;
        GPIO_OUTPUT_SET(GPIO_ID_PIN(2) 1);
    }
    else
    {
        currentDataPoint.valueswitchcontrol == 0x01;
        GPIO_OUTPUT_SET(GPIO_ID_PIN(2) 0);
    }
    ETS_GPIO_INTR_ENABLE();
}


void ICACHE_FLASH_ATTR gizwitsUserTask(os_event_t * events)
{
    uint8_t i = 0;
    uint8_t vchar = 0;

    if(NULL == events)
    {
        GIZWITS_LOG("!!! gizwitsUserTask Error \n");
    }

    vchar = (uint8)(events->par);

    switch(events->sig)
    {
    case SIG_UPGRADE_DATA:
        gizwitsHandle((dataPoint_t *)&currentDataPoint);
        break;
    default:
        GIZWITS_LOG("---error sig! ---\n");
        break;
    }
}

​​

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 从你的代码的流程上看应该是可以控制的,但还是要烧写到芯片上看看,运行的效果
    • 发布于 2018-05-16
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 这种需要实物测试一下,理论上程序时没问题的
    • 发布于2018-05-16
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

机智云短按控制继电器代码这样写上报正常吗