nRF51 SDK 例程分析——Blinky Example
本人采用的是WaveShare的BLE400扩展板和Core51822核心板链接,例程中的Evaluation Board PCA10001上的程序可以完全不加修改移植到此板上。
功能
顾名思义,此例程的功能就是两个灯交替闪烁。
源码分析
首先从main()函数看起
int main(void)
{// Configure LED-pins as outputsnrf_gpio_cfg_output(LED_0);nrf_gpio_cfg_output(LED_1);// LED 0 and LED 1 blink alternately.while(true){nrf_gpio_pin_clear(LED_0);nrf_gpio_pin_set(LED_1);nrf_delay_ms(500);nrf_gpio_pin_clear(LED_1);nrf_gpio_pin_set(LED_0);nrf_delay_ms(500);}
}
首先是初始化LED控制引脚nrf_gpio_cfg_output,打开此函数所在头文件nrf_gpio.h找到函数nrf_gpio_cfg_output
static __INLINE void nrf_gpio_cfg_output(uint32_t pin_number)
{/*lint -e{845} // A zero has been given as right argument to operator '|'" */NRF_GPIO->PIN_CNF[pin_number] =(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos)| (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos)| (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos)| (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos)| (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos);
}
NRF_GPIO,PIN_CNF 找到这两个的定义,在nRF51.h中,可以看到NRF_GPIO是一个NRF_GPIO_Type类型的指针,指向NRF_GPIO_BASE地址
#define NRF_GPIO_BASE 0x50000000UL
#define NRF_GPIO ((NRF_GPIO_Type *) NRF_GPIO_BASE)
在nRF51.h中,主要定义了外设地址映射,nRF51系列的地址映射如下图:
详情见nRF51 Series Reference Manual。
继续分析,NRF_GPIO->PIN_CNF[pin_number]是通过控制PIN_CNF[pin_number]寄存器设置pin_number引脚的状态(有关寄存器信息查阅nRF51 Series Reference Manual)。移位符号<<后的参数是要设置的引脚属性(如GPIO_PIN_CNF_PULL_Pos是设置引脚上拉还是下拉),而<<前的参数是要设置的属性值(如GPIO_PIN_CNF_PULL_Disable是不设置上拉或下拉)。更多有关属性的定义在nrf51_bitfields.h中。同时在nRF51 Series Reference Manual中可以找到引脚属性。
再往下是主循环while(1),nrf_gpio_pin_clear(LED_0)清空LED_0引脚的输出,通过控制OUTCLR寄存器的值
static __INLINE void nrf_gpio_pin_clear(uint32_t pin_number)
{NRF_GPIO->OUTCLR = (1UL << pin_number);
}
nrf_gpio_pin_set(LED_1)同理,然后通过延时实现led交替闪烁。
LED_0定义在boards/pca10001.h中
总结
像nrf_gpio_cfg_output这种函数不知是不是库函数,在nRF51 SDK中并没有找到
nRF51 SDK 例程分析——Blinky Example相关推荐
- ESP32——WebSocket Echo Server官方例程分析和测试
1 简介 开发板为ESP32-DevKitC 程序为官方示例:esp-idf\examples\protocols\http_server\ws_echo_server 创建方法参照:ESP32-- ...
- [nRF51822] 3、 新年也来个总结——图解nRF51 SDK中的Button handling library和FIFO library...
:本篇是我翻译并加入自己理解的nRF51 SDK中按钮相关操作的库和先进先出队列库.虽然是nRF51的SDK,但是通过此文你将更多地了解到在BSP(板级支持)上层嵌入式程序或OS的构建方法. 1.按钮 ...
- VB表格控件总览与例程分析
一.表格控件总览: 在VB开发环境中,表格控件在界面开发元素中占有重要的地位.它不仅有外观整洁.表达形式规范的优点,而且更重要的是它较高的信息表现率(就是相对于其他控件来说能够表达更多的信息),随着信 ...
- [nRF51822] 5、 霸屏了——详解nRF51 SDK中的GPIOTE(从GPIO电平变化到产生中断事件的流程详解)...
:由于在大多数情况下GPIO的状态变化都会触发应用程序执行一些动作.为了方便nRF51官方把该流程封装成了GPIOTE,全称:The GPIO Tasks and Events (GPIOTE) . ...
- 1.3 nuclei sdk Makefile分析
nuclei sdk Makefile分析 Make 命令 1. 根目录Makefile 2. 源码选择application/baremetal/helloworld Makefile如下 3. 分 ...
- Hi3518EV300-venc例程分析
Hi3518EV300-venc例程分析 前言: MAPI 层业务流程 VENC录像 流程: 1.定义要绑定的VCap,VProc,VENC变量 2.start vcap 3.start vproc( ...
- libfranka---joint_impendence_control例程分析
joint_impedance_control.cpp例程分析 部分内容来自链接,我个人以初学者的角度对代码进行了更加细致的解释. 核心部分: // Set and initialize trajec ...
- 短视频美颜sdk人脸编辑技术详解、美颜sdk代码分析
短视频美颜sdk中人脸编辑技术可以将人像风格进行转变,小编认为这也是未来的美颜sdk的一个重要发展方向,下文小编将为大家讲解一下短视频美颜sdk中人脸编辑的关键点. 一.人脸编辑的细分关键点 1.年龄 ...
- nrf52832 学习笔记(二)SDK框架分析
nrf52832 学习笔记(二)SDK框架分析 个人对SDK框架的一些理解,如有错误欢迎斧正. flash 分区 在不包含DFU的情况下,nrf52832 flash划分为: MBR 0x000000 ...
- UART两个例程分析
UART学习 UART基本概念 在编写具体程序之前,可以先了解下UART大致的概念,之后再在example内寻找例程进行分析.最后再参照手册就可以做出具体的东西了 通用异步收发传输器(Universa ...
最新文章
- [20180502]PLDEVELOP与存储过程调试.txt
- 微信 Tinker 负责人张绍文关于 Android 热修复直播分享记录
- Linux常用命令——压缩与解压缩命令
- 关于使用AsyncTaskLoader的使用
- HDFS应用场景、部署、原理与基本架构
- SAP Customer Data Cloud的Audit log设置
- oc基础-self关键字的使用
- Sublime Text3—Code Snippets(自定义代码片段)
- TCL电子港股暴涨10% 股价创5年新高
- linux 6.4 安装oracle10g,Red Hat Linux 6.4 安装 Oracle 10g 及问题解决
- 库克:iPhone虽贵但值得购买,相当于每天仅付1美元
- 初学 JAVA ,编程实例【人会说话,中国人说中国话,美国人说英语】
- Python实现微信机器人——itchat库
- web安全的一些专业术语介绍
- Windows下的CMake下载与安装
- html5经典教程,40个经典HTML5实例教程.pdf
- Java:QQ登录页面的制作(实现成功登录的代码)——含源码
- 弘辽科技:想要利用直通车打造爆款,这个技巧一定要把握
- 阿里巴巴 研发工程师Java暑期实习一面
- 前端面试常问的问题(必须掌握)
热门文章
- uniapp push推送服务使用指南
- win10官方iso下载
- 制作好的种子怎么上传服务器,用BT如何上传自己的文件?
- CMP是什么意思?谁能解释下?
- 【分享-世界著名的免费摄影图库】 素材中国, 高清壁纸 - PxHere摄影图库
- linux 下竟有想大白菜软件,大白菜U盘做PE及CDLINUX镜像共存的启动盘.pdf
- win10设置中账户点开闪退问题
- 原来网站上可以这样嵌套动态google地图
- spring boot + websocket 简单实现斗鱼弹幕功能
- 人工智能 | ShowMeAI资讯日报 #2022.06.07