前言
如果你跟我一样是一个蓝牙新手,并且还没有买nrf51822的开发板的话,推荐先学cc2541,如果已经买了开发板,那就看我的《蓝牙芯片NRF51822入门学习》系列文章吧,祝你尽早出坑。
本文面对的是:已经掌握nrf51822基本外设,并且阅读了TI官方视频,对蓝牙有了初步了解,但对怎么进一步学习nrf51822没有头绪的孩子。
本文的相关工具、代码和文章更新网盘链接:http://pan.baidu.com/s/1bn5y9gr 密码:ijxf
网盘内有以下两个子文件夹:
\相关软件 当中nrf51_sdk_v6_0_0_43681.zip是我们要用到的V6.0版本的SDK
\文章更新 内部有每篇文章的PDF、代码、资料、工具。
\BLE视频 TI对蓝牙基本属性的讲解
开发工具
5.1版MDK,nRFgo studio
固件版本
nrf51_sdk_v6_0_0_43681.msi,s110_nrf51822_7.0.0_softdevice.hex
相关硬件
JTAG,兼容pca10001的nrf51822开发板。
第一节:常用接口描述
开篇教程中,我们来学习nrf51822的Libraries中时间管理模块,它的源代码和头文件分别为app_timer.c/app_timer.h
这是Nordic为我们提供的虚拟定时器,这个定时器不同于硬件上的TIMER,而是基于RTC1实现的一种虚拟定时器,其将定时功能作为了一个资源进行管理,所以会有初始化、创建等过程。
-
PS1:
nrf51822的SDK采用封装思想,需要暴露给用户的信息都在相关模块的头文件中;为了提醒用户不去看具体实现细节,我们可以发现相关的API,比如app_timer_create()的源码部分都是没有接口描述信息的,相关使用方法需要看app_timer.h或者翻阅SDK目录下的Documentation\index.html。还有一些隐藏细节的封装技巧,感兴趣的孩童可以看本篇第三节。 -
PS2:快速查找定位文件,可以安装一个软件:everything,输入文件名就可以瞬间查找到想要的文件,然后再文件上右键选择“open
path”就可以打开文件所在的文件夹了。
1、参数宏APP_TIMER_INIT()
这个宏用于初始化app_timer模块,这是一个参数宏,接口定义如下:
APP_TIMER_INIT(PRESCALER, MAX_TIMERS, OP_QUEUES_SIZE, USE_SCHEDULER)
其中PRESCALE 分频比例,填入0的话,每秒就产生32768次tick,定时最大长度为0xFFFFFF次tick,也就是说5