nrf52x 二 GPIOTE
#什么是 GPIOTE
其实 GPIOTE中断和其它的单片机也差不多它对应的有 任务模式(task),事件模式(event)所谓事件 就是IO口检测到发生了变化 比如由 0变1 这就是一个时间 任务就是自己IO口主动去改变自己的状态 比如由1 变 0
任务模式(task):
每个 GPIOTE 通道最多可以使用三个任务来执行对引脚的写操作。两个任
务是固定的输出高电平(SET)和输出低电平(CLR),一个输出任务(OUT)可配置为执行以下
操作:
• 置位(Set)
• 清零(Clear)
• 切换(Toggle)
事件模式(event):
可以从以下输入条件之一在每个 GPIOTE 通道中生成事件:
• 上升的边缘
• 下降的边缘
• 任何改变
如何配置 GPIOTE
关键就是设置GPIOTE的CONFIG[n]n=0~7寄存器 一共八个通道
void EXIT_KEY_Init(void)
{nrf_gpio_cfg_input(13,NRF_GPIO_PIN_PULLUP);//设置管脚位上拉输入 NVIC_EnableIRQ(GPIOTE_IRQn);//中断嵌套设置//一共有8个对应的通道 这里是设置 具体哪个通道对应哪个IONRF_GPIOTE->CONFIG[0] = (GPIOTE_CONFIG_POLARITY_HiToLo << GPIOTE_CONFIG_POLARITY_Pos)| (13 << GPIOTE_CONFIG_PSEL_Pos) | (GPIOTE_CONFIG_MODE_Event << GPIOTE_CONFIG_MODE_Pos);//事件还是任务(Event) NRF_GPIOTE->INTENSET = GPIOTE_INTENSET_IN0_Set << GPIOTE_INTENSET_IN0_Pos;// 使能中断类型:
}
1.如上代码 nrf_gpio_cfg_input(13,NRF_GPIO_PIN_PULLUP);//这里要对Io口进行初始化设置 这很好理解(就和STM32F103一样 ,只是具体的实现方式有点不一样)
2.开启中断
3 配置模式 NRF_GPIOTE->CONFIG[0] (主要就是对它进行配置稍后会详解)
4.使能中断
这里一共20bit 比如我要配置成事件模式Event 就将它的低两位配置成 01(它这里 一般都是过10进制来写的 宏定义基本也都是10进制) 然后打开它的宏定义
它设置寄存的方式基本都是这样的.
中断配置
学过51和32的应该都知道,完成了上面的配置后还要进行中断的配置
void GPIOTE_IRQHandler(void)
{if ((NRF_GPIOTE->EVENTS_IN[0] == 1) && (NRF_GPIOTE->INTENSET & GPIOTE_INTENSET_IN0_Msk)){NRF_GPIOTE->EVENTS_IN[0] = 0; //中断事件清零.Delay(10000); if(nrf_gpio_pin_read(KEY_0)== 0){LED1_Toggle();//led灯翻转}}if ((NRF_GPIOTE->EVENTS_IN[1] == 1) && (NRF_GPIOTE->INTENSET & GPIOTE_INTENSET_IN1_Msk)){NRF_GPIOTE->EVENTS_IN[1] = 0; //中断事件清零.LED2_Toggle();//led灯翻转}}
这种中断函数是固定的 这几个通道都是公用这个中断函数然后通过if 去判断是不是这个中断发生了,和51 串口接收和发送中断都是公用一个中断函数一样.
nrf52x 二 GPIOTE相关推荐
- NRF52x开发环境搭建详解
NRF52x开发环境搭建详解 准备 环境搭建 了解内存布局 Bootloader工程 APP工程 JFlash下载 打印log 准备 以下是项目开发环境搭建的一些文档或工具链接: 项目 链接 CPU ...
- zephyr的GPIOTE驱动开发记录——基于nordic的NCS
本次测试了zephyr的中断驱动方式(GPIOTE),在这可以去看zephyr的官方文档对zephyr的中断定义,连接如下,Interrupts - Zephyr Project Documentat ...
- 条形码?二维码?生成、解析都在这里!
二维码生成与解析 一.生成二维码 二.解析二维码 三.生成一维码 四.全部的代码 五.pom依赖 直接上代码: 一.生成二维码 public class demo {private static fi ...
- 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发
基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...
- 2022-2028年中国二次供水产业发展动态及投资战略规划报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国二次供水行业市场行业相关概述.中国二次供 ...
- 2022-2028年中国二次供水设备行业研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国二次供水设备行业市场行业相关概述.中国二 ...
- OpenCV 笔记(08)— 二维点、三维点、基于 Mat 的 std::vector 等常用数据结构的定义和输出
1. 定义和输出二维点 Point2f p2(3, 4);cout << "[二维点] is "<< endl << p2 << e ...
- python内置库之学习ctypes库(二)
ctypes库踩坑日记2 一.自己实现一个dll文件,再用python的ctypes库调用思路1更清晰 二.生成dll文件 三.ctypes库调用 一.自己实现一个dll文件,再用python的cty ...
- 前端Vue学习之路(二)-Vue-router路由
Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...
最新文章
- php html报错,PHP 基础
- 计算机对下列几种存储器访问速度,2005年7月自考02275计算机基础与程序设计真题及答案...
- Redis的基本操作以及info命令
- Java 开源库精选(持续更新)
- Gradle里Copy任务(task)的使用
- mysql 范围内日期列表_MySQL:即使没有记录,也选择范围内的所有日期
- 【英语学习】【Level 07】U03 Amazing wonders L4 The Qin Dynasty legacy
- 【正则表达式】正则表达式引发的惨案 回溯 超时 cpu 100
- SpringBoot yml 配置
- appassembler-maven-plugin插件打包本地依赖的jar
- 【优化预测】基于matlab萤火虫算法优化BP神经网络预测【含Matlab源码 1313期】
- visio2013剪除_Visio 2003 图形剪切合并 高级技巧
- 《机器学习算法竞赛实战》整理 | 六、模型融合
- 设计模式(JAVA)——Facade模式
- 小程序Git版本管理
- linux格式化硬盘怎么那么慢,linux系统中怎么格式化硬盘
- OpenLayers 3 入门教程
- 七个基本量纲_国际单位制中七个基本物理量
- Android高级开发进阶图谱
- 怎么让input控件,填充满td
热门文章
- Increasing trend of scientists to switch between topics论文翻译
- wing101 缩进不管用_与lg wing一起使用最有用的双屏手机
- 风险评估等级计算机化系统分类,计算机化系统风险评估报告
- k8s使用的iptables,具体原理是什么?一学就会
- bitmap内存溢出
- php中格式化金额为千分位
- 爱思服务器能不能更新苹果手机系统,iPhone 无法更新系统怎么办?
- NDK/C++ 耗时统计类TimeUtils
- 【资源分享】Undertale(传说之下)简体中文精品整合包
- React Native的Navigator详解