nordic 51822 sdk. timer 的使用
它的源代码和头文件分别为app_timer.c/app_timer.h。这是Nordic为我们提供的虚拟定时器,这个定时器不同于硬件上的TIMER,而是基于RTC1实现的一种虚拟定时器,其将定时功能作为了一个资源进行管理,所以会有初始化、创建等过程。
nrf51822的SDK采用封装思想,需要暴露给用户的信息都在相关模块的头文件中;为了提醒用户不去看具体实现细节,我们可以发现相关的API,比如app_timer_create()的源码部分都是没有接口描述信息的,相关使用方法需要看app_timer.h或者翻阅SDK目录下的Documentation index.html。
1、参数宏APP_TIMER_INIT()
这个宏用于初始化app_timer模块,这是一个参数宏,接口定义如下:
APP_TIMER_INIT(PRESCALER, MAX_TIMERS, OP_QUEUES_SIZE, USE_SCHEDULER)
其中PRESCALE 分频比例,填入0的话,每秒就产生32768次tick,定时最大长度为0xFFFFFF次tick,也就是说500多秒定时。
与ucos提供的时基tick不同,本SDK的主要在定时到达的时候进入RTC中断,而不是每个TICK都进入。因此就算每秒就产生32768次tick,也不会拖慢系统性能。
MAX_TIMERS 必须大于等于工程中创建的timer数量。
OP_QUEUES_SIZE 操作队列的大小,具体意思看第三节。如果不作死,选择等于MAX_TIMERS就行了。
USE_SCHEDULER 是否使用任务调度器,当前不使用
2、参数宏APP_TIMER_TICKS()
这个宏用于计算特定毫秒数相当于多少个tick。接口定义如下:
APP_TIMER_TICKS(MS, PRESCALER)
其中MS是单位为毫秒的定时时间,PRESCALER是分频比例。
3、函数app_timer_create()
用于创建一个timer,并获取生成timer的控制句柄。接口定义如下:
uint32_t app_timer_create(app_timer_id_t * p_timer_id,
app_timer_mode_t mode,
app_timer_timeout_handler_t timeout_handler)
p_timer_id 读取到创建的timer的句柄
mode timer的类型,其中
APP_TIMER_MODE_SINGLE_SHOT是单次执行
APP_TIMER_MODE_REPEATED是循环执行
timeout_handler 被注册到内核的回调函数,当timer超时后就会执行。
4、函数app_timer_start()
设置一个timer的定时间隔和上下文参数,并启动这个timer。接口定义如下:
uint32_t app_timer_start(app_timer_id_t timer_id, uint32_t timeout_ticks, void * p_context)
timer_id app_timer_create()里创建的timer句柄
timeout_ticks 定时的tick数量,一般用APP_TIMER_TICKS()计算。
p_context 传递给超时回调函数的参数,不能指向局部的自动变量。
5、app_timer_stop()
停止一个timer的运行。接口定义如下:
uint32_t app_timer_stop(app_timer_id_t timer_id)
timer_id app_timer_create()里创建的timer句柄
使用流程:
app_timer_create();----> app_timer_start() ; ------->服务函数代码 -------->app_timer_stop()
先初始化将Timer创建 开始Timer使之计时 计时到后执行对应服务函数 计时停止结束
如果是APP_TIMER_MODE_SINGLE_SHOT单次执行 ,那么服务函数执行一次后就结束了,当然了可以在服务函数中再次app_timer_start() 使之再次执行一次,当然也可再次执行N次,以便灵活使用
如果是APP_TIMER_MODE_REPEATED循环执行,那么当app_timer_start()之后,时间到后会执行服务函数,计时再次重新开始,周而复始
---------------------
作者:FreeBelieve
来源:CSDN
原文:https://blog.csdn.net/AA0210AA/article/details/49760565
版权声明:本文为博主原创文章,转载请附上博文链接!
nordic 51822 sdk. timer 的使用的更多相关文章
- Nordic nRF5 SDK和softdevice介绍
SDK和Softdevice的区别是什么?怎么选择SDK和softdevice版本?芯片,SDK和softdevice有没有版本兼容问题?怎么理解SDK目录结构?SDK帮助文档在哪里?Softdevi ...
- nrf51822裸机教程-硬件timer
该讲介绍51822的Timer/Counter模块工作在timer模式下(定时器模式,还可以工作为计数器模式) 如何操作 51822的Timer/Counter结构如下图所示 Timer模块从PCLK ...
- nRF5 SDK for Mesh(四) 源码编译
官方文档教程编译源码: http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk%2Fdita%2Fs ...
- nRF5 SDK for Mesh(一) 介绍和下载源码
一: 官网介绍地址:http://www.nordicsemi.com/Products/Bluetooth-low-energy/nRF5-SDK-for-Mesh Nordic offers a ...
- nRF5 SDK软件架构及softdevice工作原理
本文将介绍Nordic nRF5 SDK软件架构以及softdevice工作原理,以加深大家对Nordic产品开发的理解,这样开发过程中碰到问题时,大家也知道如何去调试. 如果你刚开始接触nRF5 S ...
- 如何调试nRF5 SDK
本文将讲述Nordic nRF5 SDK的主要调试手段,以帮助大家快速定位问题,并解决问题.一般来说,你可以通过打log方式,IDE的debug模式,SDK自带的app_error_check函数,以 ...
- Nordic Blue Tooth
一 . nordic BLE4.0 1.开发nordic的应用需要安装支持keil的pack库和插件 2.nordic的SDK很完整,实例涵盖了几乎所有的应用 https://www.nordicse ...
- 使用IAR在开发nordic问题记录
使用IAR在开发nordic的sdk的时候,官方有一段话*****Note for IAR 8 users:(Libraries for IAR 8 require wchar_t to be of ...
- NORDIC BLE升级
NRF52832 SDK15.3.0 概述: 所谓DFU(Device Firmware Update),就是设备固件升级的意思,而OTA是DFU的一种类型,准确说,OTA的全称应该是OTA DFU, ...
随机推荐
- Golang通脉之并发初探
并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发. 并发与并行 并发:同一时间段内执行多个任务. 并行:同一时刻执行多个任务,有时间上的重叠. 进程.线程.协程 进程(Process) ...
- Windows平台编译器相关的几个预定义宏
WIN32 是在windows.h 中定义的宏,包含winodws.h则定义该宏 _WIN32/_WIN64跟windows平台有关的宏,_WIN32在windows 32位和64位下都有该宏,_ ...
- Python 模块feedparser安装使用
RSS(简易信息聚合) 简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议.RSS(Really Simple Syndication)是一种描述和同步网 ...
- minimum-depth-of-binary-tree leetcode C++
Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the short ...
- Vue 基础自查——条件渲染和列表渲染
v-if和v-show的区别是什么? v-if和v-for为什么不能一起用? v-for中的key有什么作用? 1 v-if 和 v-show 1.1 作用 都用来控制元素的显示和隐藏 1.2 控制元 ...
- 超过1W字深度剖析JVM常量池(全网最详细最有深度)
面试题:String a = "ab"; String b = "a" + "b"; a == b 是否相等 面试考察点 考察目的: 考察对 ...
- Redis源码分析(intset)
源码版本:4.0.1 源码位置: intset.h:数据结构的定义 intset.c:创建.增删等操作实现 1. 整数集合简介 intset是Redis内存数据结构之一,和之前的 sds. skipl ...
- SimpleNVR流媒体服务系统录像功能解析
录像的回放与观看是许多人在使用视频监控时必不可少的需求.人不可能每时每刻都观看视频,而录像能对摄像机的视频信息进行存储,方便用户的后期回放查看,因此,SimpleNVR的录像功能应运而生. ...
- 攻防世界 Misc 新手练习区 坚持60s Writeup
攻防世界 Misc 新手练习区 坚持60s Writeup 题目介绍 题目考点 java反编译 jd-gui 的使用 Writeup 下载附件并打开 kali执行命令 java -jar 9dc125 ...
- C++ 函数模板实现原理剖析
C++ 函数模板实现机制原理剖析 重点 编译器并不是把函数模板处理成能够处理任意类的函数 编译器从函数模板通过具体类型来产生不同的函数 编译器会对函数模板进行两次编译 (1)在声明的位置对模板代码进行 ...