Nordic52810入门篇 - IO外部中断(GPIOTE任务与事件)

一、前言背景

Nordic52810虽然是ARM的框架,但是GPIO的中断与我们熟悉的STM32外部中断使用完全不一样,前面的文章里LZ有讲到过GPIO的结构图,使能PIN脚的Sense信号检测后,可触发GPIOTE模块的任务与事件

二、应用场景

1. 睡眠模式下的唤醒,使能蓝牙协议栈后,使用的是sd_app_evt_wait,可被任意事件中断唤醒

2. 不跑协议栈的话,可以进入system_off模式(官方提示功耗可在0.5uA)

由于睡眠状态下,我需要板子能持续进行广播,所以使用sd_app_evt_wait接口进入系统休眠

三、GPIOTE功能分类

GPIOTE做输入模块检测使用的话,有两种事件可供配置使用

PIN EVENT事件: 检测单个引脚电平变化;

优点:响应快,引脚中断之间互不干扰;

缺点:通道有限,最大支持8个引脚,功耗较高(使用高频时钟)

PORT EVENT事件:检测到任意引脚电平变化,高电平、低电平;触发DETECT Signal。

优点:通道不受限制,理论上所有引脚都可以配置,功耗低(使用低频时钟);

缺点:任意引脚中断有效时,其他引脚中断将无法触发(这个就优点恶心,因为是电平中断,这个中断就会一直保持,无法响应其他中断)。即任意时刻如果有两个中断触发,其中一个可能就会丢失

四、寄存器

GPIOTE模块的寄存器并不是很多,主要是配置中断禁用与使能与引脚的触发方式

INTENSET:[RW IN0 - IN7]低7位控制PIN事件中断使能(对应8路引脚)     PORT[31]  最高位PORT事件中断使能

写1   Enable 使能中断;

写0   无效

INTENCLR:  禁用中断;

同上,写1 Disable 禁用中断

CONFIG[0 - 7]:配置寄存器

MODE[0-1] 事件、任务的模式选择(可读写)

PSEL[8-12] 占用5bit(0 - 31),配置31个引脚关联到对应的任务或事件(SET CLR OUT 可读写)

POLARITY[16-17]  配置级性,输出模式下可进行引脚 低到高 高到低 翻转

OUTINIT 任务模式下面引脚初始电平(0 低电平 1高电平)

五、程序实例

配置引脚前需要进行GPIOTE模块的使能与优先级的配置,考虑到蓝牙的功耗至上的原则,下面程序我配置的是PORT EVENT,

按键使用的PIN13,低电平触发

#define BUTTON1_PIN                         13

void InitButtonIO(void)

{

//必须先配置GPIOTE模块

    NRFX_IRQ_PRIORITY_SET(GPIOTE_IRQn, NRFX_GPIOTE_CONFIG_IRQ_PRIORITY);

    NRFX_IRQ_ENABLE(GPIOTE_IRQn);

    nrf_gpiote_event_clear(NRF_GPIOTE_EVENTS_PORT);

    nrf_gpiote_int_enable(GPIOTE_INTENSET_PORT_Msk);

//上拉低电平触发事件

    nrf_gpio_cfg_sense_input(BUTTON1_PIN,NRF_GPIO_PIN_PULLUP,NRF_GPIO_PIN_SENSE_LOW);

    return;

}

中断入口的配置

当中断触发后,为了防止一直进中断,可以根据当前按键电平重新配置,这样就不会一直进中断了,烧录代码后,可见按键按下弹起LED灯也跟着进行翻转

void GPIOTE_IRQHandler(void)
{
    nrf_gpiote_event_clear(NRF_GPIOTE_EVENTS_PORT); //清中断事件

//判断当前按键电平,设置触发电平

    if(nrf_gpio_pin_read(BUTTON1_PIN))
        nrf_gpio_cfg_sense_set(BUTTON1_PIN, NRF_GPIO_PIN_SENSE_LOW);
    else
        nrf_gpio_cfg_sense_set(BUTTON1_PIN, NRF_GPIO_PIN_SENSE_HIGH);

    LedToggle();
}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nrf52810开发指南-上册.pdf是一本非常详细的指南,可以帮助人们更好地了解和学习nrf52810无线芯片的开发和使用方法。该指南主要介绍了nrf52810的基本特性、硬件架构、软件开发环境、开发工具、编程语言、开发流程等方面的内容。 该指南以实例讲解的方式,详细介绍了如何使用nrf52810从事无线应用程序的开发。具体而言,该指南介绍了如何使用Keil MDK、IAR Embedded Workbench、SEGGER Embedded Studio等IDE工具,以及nrf5 SDK和nrf5x Command Line Tools等开发工具进行开发。 另外,该指南还分析了nrf52810在无线通讯中的应用场景,包括基于Bluetooth Low Energy(BLE)的智能家居、可穿戴设备等领域。通过实践和案例演示,读者能够深入了解nrf52810芯片的广泛应用前景。 总之,nrf52810开发指南-上册.pdf是一份非常有价值的指南,对于无线产品开发者和爱好者都有非常大的帮助,值得一读。 ### 回答2: nrf52810是Nordic公司最新推出的低功耗蓝牙芯片,它采用ARM Cortex-M4处理器,拥有256KB的闪存和24KB的RAM,非常适合开发低功耗蓝牙设备。该芯片还支持Nordic公司自主开发的S132 SoftDevice协议栈,可以实现BLE4.2和BLE5.0的各种特性,如长包、扫描窗口等。 该开发指南共分为六个章节,第一章介绍了nrf52810芯片的主要特点,第二章讲解了如何使用开发板进行测试与调试,第三章介绍了如何使用nRF5 SDK和nRF5 SoftDevice进行开发,第四章讲解了如何使用Nordic公司的开发工具nRF Connect和Segger J-Link进行开发,第五章讲解了如何进行定制化开发,第六章则是常见问题解答与扩展阅读。 通过阅读该开发指南,开发者可以快速了解nrf52810芯片的各项特性,掌握开发与调试技巧,并且学会如何利用Nordic公司的各种开发工具进行开发。此外,该指南还提供了大量的编程示例和实验框图,可以帮助开发者快速上手并深入理解nrf52810的开发流程。 总之,nrf52810开发指南为开发低功耗蓝牙设备的开发者提供了全面且实用的开发指导,是一本非常优秀的开发书籍,值得大家阅读。 ### 回答3: nRF52810开发指南-上册是针对nRF52810芯片的开发指南,该芯片是由北欧半导体公司推出的低功耗蓝牙SoC芯片。本开发指南针对该芯片的主要功能特点和应用场景,提供了全面的技术说明和具体实践操作指引。 一方面,本开发指南详细介绍了nRF52810芯片的硬件架构和软件框架,包括CPU核心、内存、外设、通信接口等方面的详细说明,同时还介绍了nRF52810芯片的功耗特点和低功耗技术实现方法。这些内容对于硬件工程师和软件工程师来说都是非常重要的,可以帮助他们在设计和开发过程中更好地了解和掌握nRF52810芯片的内部结构和工作原理。 另一方面,本开发指南还提供了丰富的样例程序和实践案例,包括基于SDK的应用程序设计、BLE服务设计、无线OTA升级、传感器数据采集和处理等方面的实现方法和具体代码。这些实践案例不仅可以帮助读者更好地理解nRF52810芯片的使用方法和应用场景,还可以为实际应用开发提供有参考价值的实践经验。 总之,nRF52810开发指南-上册是一份非常优秀的技术文档,对于从事低功耗蓝牙应用开发的工程师和科研人员来说都是非常有价值的。它详细介绍了nRF52810芯片的设计和开发方法、低功耗技术实现方案,并提供了多个实践案例和具体的应用程序设计,为读者提供了全面且实用的技术指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值