<t>请问我再中断中关闭中断使能,再应用中开启中断使能。但是开始会响应。才是多按几次按钮中断就不响应呢怎么办呢?中断代码和线程<br/>
代码如下:<br/>
static void IRAM_ATTR gpio_isr_handle(void* arg)<br/>
{<br/>
uint32_t gpio_num = (uint32_t)arg;<br/>
xQueueSendFromISR(gpio_pen_queue,&gpio_num,NULL);<br/>
GPIO.pin[GPIO_PEN_SDA_IO].int_ena = 0; ///关闭中断<br/>
}<br/>
static void gpio_task_example(void* arg)<br/>
{<br/>
uint32_t io_num;<br/>
for(;;) {<br/>
if(xQueueReceive(gpio_pen_queue, &io_num, portMAX_DELAY)) {<br/>
printf("GPIO[%d] intr, val: %d\n", io_num, gpio_get_level(io_num));<br/>
// GPIO.status_w1tc=1<<GPIO_PEN_SDA_IO;<br/>
// GPIO.pin[GPIO_PEN_SDA_IO].int_type = GPIO_INTR_NEGEDGE; <br/>
// GPIO.pin[GPIO_PEN_SDA_IO].int_ena = 1; ///开启中断<br/>
gpio_set_intr_type(GPIO_PEN_SDA_IO, GPIO_INTR_NEGEDGE);<br/>
gpio_intr_enable(GPIO_PEN_SDA_IO);<br/>
}<br/>
}<br/>
}</t>
GPIO中断
-
- Posts: 118
- Joined: Tue Jun 26, 2018 3:09 am
Re: GPIO中断
可能与最近修复的一个 GPIO 问题有关, 可以尝试最新的 master 分支. 或者用下面的两种方案:
1. 使用单核
2. 处理 GPIO 的任务在创建的时候指定在调用 gpio_install_isr_service 的核上
thanks !!
1. 使用单核
2. 处理 GPIO 的任务在创建的时候指定在调用 gpio_install_isr_service 的核上
thanks !!
wookooho
Who is online
Users browsing this forum: Google [Bot] and 184 guests