| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> nRF52832学习记录(一、外设初识) -> 正文阅读 |
|
[嵌入式]nRF52832学习记录(一、外设初识) |
这些年蓝牙5.0的应用越来越多,最近也是想着把以前Enocean的低功耗设备有过的产品,用蓝牙做一套匹配的版本,使得产品线更加丰富,我们这里选择的是主流的 nRF52832 芯片。 1、GPIO 和 GPIOTE 在学习的第一步,GPIO 和 GPIOTE我就疑惑了,这个与以前用过的单片机和 STM32 不类似啊,为什么对于IO口需要分GPIO和GPIOTE呢? 这里在网上找了一些相关的说明: 下面的部分转至:nRF5芯片外设GPIO和GPIOTE介绍 和 nRF5芯片外设GPIO和GPIOTE介绍 GPIO和GPIOTE都属于芯片外设,但两者功能完全不一样,使用过程中不要将两者混淆。GPIO就大家通常理解的普通IO口,用来对IO口进行读写等操作。因此,如果你需要读某个IO口状态,或者将某个IO口置1,那么请使用nrf_gpio.h里面的API,比如 nrf_gpio_cfg_input 用来将IO设为输入模式,可以配置为没有pull,有上拉电阻,有下拉电阻,悬浮等4种状态 除此之外,GPIO模块还有2个非常重要的功能:
GPIOTE,全称GPIO Tasks and Events,GPIOTE首先是一个外设模块,因此它遵守芯片外设最基本规则:每一个时刻每一个GPIO口只能被一个外设使用,因此当某一个IO口被用做GPIOTE了,那么它就不能再作为普通GPIO来使用了,也就是上面提到的GPIO API将变得无效,此时必须使用nrfx_gpiote.h(老版本为nrf_drv_gpiote.h)里面的API。Nordic将状态机引入到每一个外设,也就是说,每一个外设都有自己的输入(task),输出(event)和状态。GPIOTE的作用就是让GPIO也具有task和event的功能,也就是说,对GPIOTE来说,将某一个IO口置1,其实是触发TASKS_SET;检测某一个IO口上升沿,其实是等待EVENTS_IN。让IO口支持task和event机制,将为后面的PPI自动化操作打下基础,关于PPI详细说明,请参考如何理解nRF芯片的外设PP1 前面也提到过,处理IO口中断,必须通过GPIOTE模块来做,GPIOTE支持两种类型中断: EVENTS_IN和EVENTS_PORT两者初始化区别如下所示:
如上所述,IN event中断和Port event中断,两者本质上是一样的,唯一的区别是:IN event中断每个中断口是相互独立的,而Port event中断所有IO口共用同一个中断标志位。 IN event需要高频时钟,所以功耗比较高,在精度可以接受的情况下,优先推荐使用port event。 SDK自带GPIOTE应用例程,感兴趣的读者请参考Keil5工程:SDK安装目录\examples\peripheral\pin_change_int\pca10040\blank\arm5_no_packs SDK也自带Sense例子,有兴趣的读者请参考Keil5工程:SDK安装目录\examples\peripheral\ram_retention\pca10040\blank\arm5_no_packs 关于Port event中断使用例子,可以参考Nordic的app_button模块,比如ble_app_hrs就会用到这个模块,大家可以去看一下app_button是如何使用port event中断的。 有了上面的基础,然后再去做52832的GPIO口实验,就知道所以然了。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:41:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |