将中断设置为TUYA_GPIO_IRQ_RISE_FALL,按下按键就直接卡死触发看门狗。
Code: Select all
#include "hly_key.h"
#include "tuya_cloud_types.h"
#include "tal_log.h"
#include "tal_thread.h"
#include "tal_system.h"
#include "tkl_gpio.h"
#include "tkl_output.h"
#define KEY_PIN TUYA_GPIO_NUM_12
/*GPIO input init*/
STATIC THREAD_HANDLE key_task_handle= NULL;
UINT16_T irq_count=0;
STATIC VOID_T hly_key_irq_cb(VOID_T *args)
{
irq_count++;
}
STATIC VOID_T key_task(VOID_T* param)
{
while(1)
{
TAL_PR_NOTICE("irq_count=%d",irq_count);
tal_system_sleep(1000);
}
}
VOID_T hly_key_init(VOID_T)
{
TUYA_GPIO_BASE_CFG_T in_pin_cfg = {
.mode = TUYA_GPIO_PUSH_PULL,
.direct = TUYA_GPIO_INPUT,
};
TUYA_GPIO_IRQ_T irq_cfg = {
.cb = hly_key_irq_cb,
.arg = NULL,
.mode = TUYA_GPIO_IRQ_RISE_FALL//TUYA_GPIO_IRQ_RISE,//
};
tkl_gpio_init(KEY_PIN, &in_pin_cfg);
tkl_gpio_irq_init(KEY_PIN, &irq_cfg);
tkl_gpio_irq_enable(KEY_PIN);
THREAD_CFG_T key_task_cfg={1024,1,"key_task"};
tal_thread_create_and_start(&key_task_handle,NULL,NULL,key_task,NULL,&key_task_cfg);
TAL_PR_DEBUG("key init");
}