博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ESP8266 NON-OS SDK 和 RTOS SDK实现GPIO中断不同点
阅读量:6407 次
发布时间:2019-06-23

本文共 1428 字,大约阅读时间需要 4 分钟。

ESP8266 Non-OS SDK 和 RTOS SDK 实现GPIO的方法稍有不同:

对于 Non-OS SDK,比如需要把 MTDO 配置成输入,同时下降沿触发中断:

gpio_init(void){PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U,FUNC_GPIO15);     GPIO_DIS_OUTPUT(GPIO_ID_PIN(15)); //Configure it in input mode.    ETS_GPIO_INTR_DISABLE();    //Close the GPIO interrupt//Register the interrupt function    ETS_GPIO_INTR_ATTACH(GPIO_INTERRUPT,NULL);         gpio_pin_intr_state_set(GPIO_ID_PIN(15),GPIO_PIN_INTR_NEGEDGE); //Falling edge trigger   ETS_GPIO_INTR_ENABLE() ;    //Enable the GPIO interrupt}

 对于 RTOS SDK,实现相同的功能:

{      GPIO_ConfigTypeDef gpio_in_cfg;    //Define GPIO Init Structure  gpio_in_cfg.GPIO_IntrType = GPIO_PIN_INTR_NEGEDGE;    //  gpio_in_cfg.GPIO_Mode = GPIO_Mode_Input;    //Input mode  gpio_in_cfg.GPIO_Pullup = GPIO_PullUp_EN;  gpio_in_cfg.GPIO_Pin = keygpio;    // Enable GPIO  gpio_config(&gpio_in_cfg);    //Initialization function  GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, TRUE);  gpio_intr_handler_register(keyinterrupt_cb, NULL); // Register the interrupt function  _xt_isr_unmask(1 << ETS_GPIO_INUM);    //Enable the GPIO interrupt}

特别留意:

在中断回调函数中,

{  _xt_isr_mask(1<

在disable interrupt之后,如果有中断信号触发中断引脚,即使还未使能中断,但interrupt mask仍然会被置为中断标志,因此,为避免Enable the GPIO interrupt之后,由于受之前中断位的影响而马上再次中断,故在_xt_isr_unmask(1 << ETS_GPIO_INUM);  //Enable the GPIO interrupt之前务必加上GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS, TRUE ); //clear interrupt mask

 

转载于:https://www.cnblogs.com/CYP01/p/6403126.html

你可能感兴趣的文章
Entity Framework 系统约定配置
查看>>
优秀设计:纹理在网页设计中的20个应用示例
查看>>
C++ 关键字 explicit, export, mutable
查看>>
生成指定范围的一组随机数并求平均值
查看>>
android语音识别方法
查看>>
File Operations in Android NDK(转)
查看>>
如何将kux格式的视频转换成我们常用的MP4格式
查看>>
[sublime系列文章] sublime text 3插件配置说明
查看>>
学习 PixiJS — 碰撞检测
查看>>
Vue 基础篇
查看>>
JavaScript:函数防抖与函数节流
查看>>
关于区间贪心的补全
查看>>
架构设计步骤
查看>>
自定义元素探秘及构建可复用组件最佳实践
查看>>
区块链是一个公共数据库,要放在一个块内
查看>>
Jenkins 用户文档(目录)
查看>>
系统常见指标
查看>>
使用crond构建linux定时任务及日志查看
查看>>
地图绘制初探——基于maptalks的2.5D地图绘制
查看>>
SpringBoot2.0之七 实现页面和后台代码的热部署
查看>>