|  | 
 
| 
 
 
 NONOS(2.2.0)NONOS(2.2.0)
 NONOS(2.2.0)
  1.直接上菜 
  
 
 void gpio0_intr_handler()
 {
 uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);//读取GPIO状态寄存器,获取中断信息
 GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);//清除中断信息
 if(gpio_status & (BIT(0)))//GPIO0产生的中断
 {
 if(!GPIO_INPUT_GET(0))//GPIO0是低电平    GPIO0确实是下降沿产生了中断
 {
 os_printf("GpioDown\r\n");
 }
 }
 }
 
 
 /******************************************************************************
 * FunctionName : user_init
 * Description  : entry of user application, init user function here
 * Parameters   : none
 * Returns      : none
 *******************************************************************************/
 void ICACHE_FLASH_ATTR
 user_init(void)
 {
 uart_init_2(BIT_RATE_115200,BIT_RATE_115200);
 os_printf("SDK version:%s\n", system_get_sdk_version());
 os_printf("hello_ai\n");
 
 
 /*配置中断引脚**********************************************/
 PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);
 GPIO_DIS_OUTPUT(0);//如果以前设置过GPIO为输出,则调用此函数关闭GPIO输出
 PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);//上拉输入
 //全局关闭GPIO中断
 ETS_GPIO_INTR_DISABLE();
 //设置中断函数
 ETS_GPIO_INTR_ATTACH(gpio0_intr_handler, NULL);
 //设置中断触发方式
 gpio_pin_intr_state_set(0, GPIO_PIN_INTR_NEGEDGE);//下降沿触发
 ETS_GPIO_INTR_ENABLE();
 }
 
 
 测试
 按下按钮 
 
 RTOS(2.2.0)RTOS(2.2.0)
 RTOS(2.2.0)
 
  1.直接上菜 
 
 
 #include "gpio.h" //设置GPIO0下降沿中断PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);//GPIO0做为普通IO使用 GPIO_DIS_OUTPUT(0);//0:GPIO0    如果以前设置过GPIO为输出,则调用此函数关闭GPIO0输出
 PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);//GPIO0上拉输入
 
 
 _xt_isr_mask(1<<ETS_GPIO_INUM);    //关闭GPIO中断
 gpio_intr_handler_register(gpio0_intr_handler, NULL);//设置中断函数
 gpio_pin_intr_state_set(0, GPIO_PIN_INTR_NEGEDGE);//0:GPIO0        GPIO_PIN_INTR_NEGEDGE:下降沿触发
 _xt_isr_unmask(1 << ETS_GPIO_INUM); //使能GPIO中断
 
 
 
 //GPIO0中断回调函数void gpio0_intr_handler() {
 uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);//读取GPIO状态寄存器,获取中断信息
 GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);//清除中断信息
 if(gpio_status & (BIT(0)))//GPIO0产生的中断
 {
 if(!GPIO_INPUT_GET(0))//GPIO0是低电平    GPIO0确实是下降沿产生了中断
 {
 printf("GpioDown\r\n");
 }
 }
 }
 
 
 如果使用的NONOS版本请查看文章最后的区别 测试
 按下按钮 
 
 
 扩展:配置GPIO4
 //设置GPIO4下降沿中断 PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U , FUNC_GPIO4);//GPIO4做为普通IO使用
 GPIO_DIS_OUTPUT(4);//4:GPIO4    如果以前设置过GPI4为输出,则调用此函数关闭GPIO4输出
 PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO4_U);//GPIO4上拉输入
 
 
 _xt_isr_mask(1<<ETS_GPIO_INUM);    //关闭GPIO中断
 gpio_intr_handler_register(gpio4_intr_handler, NULL);//设置中断函数
 gpio_pin_intr_state_set(4, GPIO_PIN_INTR_NEGEDGE);//4:GPIO4        GPIO_PIN_INTR_NEGEDGE:下降沿触发
 _xt_isr_unmask(1 << ETS_GPIO_INUM); //使能GPIO中断
 
 
 
 //GPIO4中断回调函数 void gpio4_intr_handler()
 {
 uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);//读取GPIO状态寄存器,获取中断信息
 GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);//清除中断信息
 if(gpio_status & (BIT(4)))//GPIO4产生的中断
 {
 if(!GPIO_INPUT_GET(4))//GPIO4是低电平    GPIO4确实是下降沿产生了中断
 {
 printf("GpioDown\r\n");
 }
 }
 }
 
 
 
 
 | 
 
  |