#什么是 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相关推荐

  1. NRF52x开发环境搭建详解

    NRF52x开发环境搭建详解 准备 环境搭建 了解内存布局 Bootloader工程 APP工程 JFlash下载 打印log 准备 以下是项目开发环境搭建的一些文档或工具链接: 项目 链接 CPU ...

  2. zephyr的GPIOTE驱动开发记录——基于nordic的NCS

    本次测试了zephyr的中断驱动方式(GPIOTE),在这可以去看zephyr的官方文档对zephyr的中断定义,连接如下,Interrupts - Zephyr Project Documentat ...

  3. 条形码?二维码?生成、解析都在这里!

    二维码生成与解析 一.生成二维码 二.解析二维码 三.生成一维码 四.全部的代码 五.pom依赖 直接上代码: 一.生成二维码 public class demo {private static fi ...

  4. 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发

    基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...

  5. 2022-2028年中国二次供水产业发展动态及投资战略规划报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国二次供水行业市场行业相关概述.中国二次供 ...

  6. 2022-2028年中国二次供水设备行业研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国二次供水设备行业市场行业相关概述.中国二 ...

  7. OpenCV 笔记(08)— 二维点、三维点、基于 Mat 的 std::vector 等常用数据结构的定义和输出

    1. 定义和输出二维点 Point2f p2(3, 4);cout << "[二维点] is "<< endl << p2 << e ...

  8. python内置库之学习ctypes库(二)

    ctypes库踩坑日记2 一.自己实现一个dll文件,再用python的ctypes库调用思路1更清晰 二.生成dll文件 三.ctypes库调用 一.自己实现一个dll文件,再用python的cty ...

  9. 前端Vue学习之路(二)-Vue-router路由

    Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...

最新文章

  1. php html报错,PHP 基础
  2. 计算机对下列几种存储器访问速度,2005年7月自考02275计算机基础与程序设计真题及答案...
  3. Redis的基本操作以及info命令
  4. Java 开源库精选(持续更新)
  5. Gradle里Copy任务(task)的使用
  6. mysql 范围内日期列表_MySQL:即使没有记录,也选择范围内的所有日期
  7. 【英语学习】【Level 07】U03 Amazing wonders L4 The Qin Dynasty legacy
  8. 【正则表达式】正则表达式引发的惨案 回溯 超时 cpu 100
  9. SpringBoot yml 配置
  10. appassembler-maven-plugin插件打包本地依赖的jar
  11. 【优化预测】基于matlab萤火虫算法优化BP神经网络预测【含Matlab源码 1313期】
  12. visio2013剪除_Visio 2003 图形剪切合并 高级技巧
  13. 《机器学习算法竞赛实战》整理 | 六、模型融合
  14. 设计模式(JAVA)——Facade模式
  15. 小程序Git版本管理
  16. linux格式化硬盘怎么那么慢,linux系统中怎么格式化硬盘
  17. OpenLayers 3 入门教程
  18. 七个基本量纲_国际单位制中七个基本物理量
  19. Android高级开发进阶图谱
  20. 怎么让input控件,填充满td

热门文章

  1. Increasing trend of scientists to switch between topics论文翻译
  2. wing101 缩进不管用_与lg wing一起使用最有用的双屏手机
  3. 风险评估等级计算机化系统分类,计算机化系统风险评估报告
  4. k8s使用的iptables,具体原理是什么?一学就会
  5. bitmap内存溢出
  6. php中格式化金额为千分位
  7. 爱思服务器能不能更新苹果手机系统,iPhone 无法更新系统怎么办?
  8. NDK/C++ 耗时统计类TimeUtils
  9. 【资源分享】Undertale(传说之下)简体中文精品整合包
  10. React Native的Navigator详解