NRF51822之GPIOTE使用
---恢复内容开始---
在上篇介绍nrf51822的GPIOTE http://www.cnblogs.com/libra13179/p/5336580.html
我们现在开始下水游泳。
/** @file * @brief Example GPIOTE project. * @defgroup nrf_app_gpiote_example Example Template * */ #include <stdbool.h> #include "SEGGER_RTT.h" #include "nrf_gpio.h" #include "app_gpiote.h" #include "boards.h" #define APP_GPIOTE_MAX_USERS 1 /** Change this to match amount ot GPIOTE users, app_button uses one */ app_gpiote_user_id_t m_app_gpiote_my_id; void app_error_handler(uint32_t error_code, uint32_t line_num, const uint8_t * p_file_name) { NVIC_SystemReset(); } void gpiote_event_handler(uint32_t event_pins_low_to_high, uint32_t event_pins_high_to_low) { << BUTTON_1)) { SEGGER_RTT_WriteString(, "nrf_gpio_pin_set.\n\n");//这边可以更据自己的情况进行替换 } << BUTTON_1)) { SEGGER_RTT_WriteString(, "nrf_gpio_pin_clear.\n\n");//这边可以更据自己的情况进行替换 } } /** * Initialize the button GPIO pins to generate interrupts on push. */ static void buttons_init() { uint32_t err_code; uint32_t low_to_high_bitmask = 0x00000000; uint32_t high_to_low_bitmask = ( << BUTTON_1); // Configure BUTTON1 with SENSE enabled nrf_gpio_cfg_sense_input(BUTTON_1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW); APP_GPIOTE_INIT(APP_GPIOTE_MAX_USERS); err_code = app_gpiote_user_register(&m_app_gpiote_my_id, low_to_high_bitmask, high_to_low_bitmask, gpiote_event_handler); APP_ERROR_CHECK(err_code); err_code = app_gpiote_user_enable(m_app_gpiote_my_id); APP_ERROR_CHECK(err_code); } /**@brief Function for the Power Management. */ static void power_manage(void) { // Use directly __WFE and __SEV macros since the SoftDevice is not available. // Wait for event. __WFE(); // Clear Event Register. __SEV(); __WFE(); } /** * @brief Function for application main entry. */ int main(void) { SEGGER_RTT_WriteString(, "\033[2JBY libra .\n\n"); buttons_init(); while(true) { power_manage(); } } /** @} */
当我们按下 BUTTON_1可以看到显示多个nrf_gpio_pin_set,而多个nrf_gpio_pin_set是由于机械按键的抖动造成的。
需要添加的工程中文件
..\..\..\..\..\components\libraries\gpiote\app_gpiote.c
..\..\..\..\..\components\drivers_nrf\common\nrf_drv_common.c
..\..\..\..\..\components\drivers_nrf\gpiote\nrf_drv_gpiote.c
添加文件技巧建立一个空文件到工程中将上面的路径直接复制保存即可。
NRF51822之GPIOTE使用的更多相关文章
- NRF51822之GPIOTE介绍
Note This library is obsolete and should not be used in new designs. Instead, you should use GPIOTE ...
- nRF51822外设应用[2]:GPIOTE的应用-按键检测
版权声明:本文为博主原创文章,转载请注明作者和出处. 作者:强光手电[艾克姆科技-无线事业部] 1. nRF51822寄存器类型 nRF51822的寄存器和一般的单片机有所差别,nRF51822 ...
- [nRF51822] 5、 霸屏了——详解nRF51 SDK中的GPIOTE(从GPIO电平变化到产生中断事件的流程详解)
:由于在大多数情况下GPIO的状态变化都会触发应用程序执行一些动作.为了方便nRF51官方把该流程封装成了GPIOTE,全称:The GPIO Tasks and Events (GPIOTE) . ...
- nrf51822裸机教程-GPIOTE
GPIO通常都会具有中断功能,上一讲的GPIO中并没有涉及到中断的相关寄存器. 51822将GPIO的中断相关做成了一个单独的模块GPIOTE,这个模块不仅提供了GPIO的中断功能,同时提供了 通过t ...
- [nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)
蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体 ...
- [nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM
一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指 ...
- [编译] 4、在Linux下搭建nRF51822的开发烧写环境(makefile版)
星期日, 09. 九月 2018 07:51下午 - beautifulzzzz 1.安装步骤 1) 从GNU Arm Embedded Toolchain官网下载最新的gcc-arm工具链,写文章时 ...
- nRF51822 的两路 PWM 极性
忙了一阵这个PWM,玩着玩着终于发现了些规律.Nordic 也挺会坑爹的. nRF51822 是没有硬件 PWM 的,只能靠一系列难以理解的 PPI /GPIOTE/TIMER来实现,其实我想说,我醉 ...
- [nRF51822] 13、浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程
前言: nRF51可以支持基于2.4G的互相通信.与NRF24LE1的通信.与NRF24LU1的通信.与NRF24L01的通信. 一.nRF51822基于2.4G和nRF51822通信 其中nRF5 ...
随机推荐
- Android DrawerLayout 高仿QQ5.2双向侧滑菜单
1.概述 之前写了一个Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭 ,恰逢QQ5.2又加了一个右侧菜单,刚好看了下DrawerLayout,一方面官方的东西,我都比较感兴趣:另一方面 ...
- 循环日期的shell
date="2015-09-23"enddate='2015-11-08'while [[ $date < $enddate ]] do date=`date -d &quo ...
- eclipse中编译时enum出现cannot be resolved to a type错误
eclipse中编译时enum出现cannot be resolved to a type错误 通常是因为eclise使用的jdk版本的问题...默认是使用的是jdk1.5 应该去选择成jdk1.6或 ...
- invokedynamic指令
Java虚拟机的字节码指令集的数量从Sun公司的第一款Java虚拟机问世至JDK 7来临之前的十余年时间里,一直没有发生任何变化.随着JDK 7的发布,字节码指令集终于迎来了第一位新成员--invok ...
- Python实践:提取文章摘要
一.概述 二.纯文本摘要 三.HTML摘要 一.概述 在博客系统的文章列表中,为了更有效地呈现文章内容,从而让读者更有针对性地选择阅读,通常会同时提供文章的标题和摘要. 一篇文章的内容可以是纯文本格式 ...
- js:数据结构笔记6--字典
Dictionary类的基础是数组不是对象:字典的主要用途是通过键取值: 基本定义: function Dictionary() { this.dataStore = new Array(); thi ...
- 去掉地址栏中的jsessionid
原来我在index.jsp中的编码是 <c:redirect url="/sys/login.shtm"/> 结果每次第一次登录都会在地址栏上出现了jsessionid ...
- 使用本地yum源
[root@xaiofan ~]# mount /dev/sr0 /mnt/ [root@xaiofan ~]# cat /etc/yum.repos.d/local.repo [loacl]name ...
- Qt 程序退出时断言错误——_BLOCK_TYPE_IS_VALID(pHead->nBlockUse),由setAttribute(Qt::WA_DeleteOnClose)引起
最近在学习QT,自己仿写了一个简单的QT绘图程序,但是在退出时总是报错,断言错误: 报错主要问题在_BLOCK_TYPE_IS_VALID(pHead->nBlockUse),是在关闭窗口时报的 ...
- 移动Web—CSS为Retina屏幕替换更高质量的图片
来源:互联网 作者:佚名 时间:12-24 10:37:45 [大 中 小] 点评:Retian似乎是屏幕显示的一种趋势,这也是Web设计师面对的一个新挑战;移动应用程序的设计师们已经学会了如何为Re ...