它的源代码和头文件分别为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
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/jack-hzm/p/10179062.html

nordic 51822 sdk. timer 的使用相关推荐

  1. Nordic nRF5 SDK和softdevice介绍

    SDK和Softdevice的区别是什么?怎么选择SDK和softdevice版本?芯片,SDK和softdevice有没有版本兼容问题?怎么理解SDK目录结构?SDK帮助文档在哪里?Softdevi ...

  2. 【nordic】nordic connect SDK (NCS)开发实例

    文章目录 commit TBD 前言 环境 1.新SDK的简介 1.1 官网介绍 1.2 git仓库 1.3 文档中心 2.下载并安装开发环境 创建一个demo并编译烧录(Quick Start) 常 ...

  3. nordic/nrf52 SDK主机设置short name filter(简称过虑)

    平台:nordic nrf5283x系列 SDK版本:nRF5 17.02 问题:在主机中根据示例设置short_name filter,正常编译运行,但过滤策略不起作用 解决:通过咨询nordic社 ...

  4. Nordic nRF5 SDK 学习笔记之四, TWI (I2C) 总线

    硬件: nRF52832 SDK: Ver 15.2.0 目标: TWI (I2C) 总线应用 (TWI MASTER 模式) 样例: <InstallFolder>\examples\p ...

  5. Nordic nRF5 SDK 学习笔记之七, 功耗评估及电源优化

    NORDIC 官方评估功耗在线测试 NORDIC Online Power Profiler,https://devzone.nordicsemi.com/power/ NORDIC 关于低功耗的官方 ...

  6. azkaban config: nodes:_关于Nordic SDK的sdk.config.h

    使用MDK对Nordic SDK开发,离不开sdk.config.h.请看以下两个视图: Text Editor视图 Configuration Wiard视图 咋一看挺神奇的,配置视图话,方便.具体 ...

  7. Nordic 芯片包 sdk 软件相关下载地址

    Nordic nRF5芯片包下载地址: http://developer.nordicsemi.com/nRF5_SDK/pieces/nRF_DeviceFamilyPack/ Nordic 蓝牙开 ...

  8. nRF5 SDK for Mesh(一) 介绍和下载源码

    一: 官网介绍地址:http://www.nordicsemi.com/Products/Bluetooth-low-energy/nRF5-SDK-for-Mesh Nordic offers a ...

  9. nRF5 SDK for Mesh(四) 源码编译

    官方文档教程编译源码: http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk%2Fdita%2Fs ...

最新文章

  1. 如何用 TensorFlow 实现生成式对抗网络(GAN)
  2. Android学习笔记-Wifi网络操作
  3. asic面试题目 英伟达_英伟达一面总结
  4. mysql bind param_为什么bindParam必须要指定类型?
  5. 【线上分享】边缘云跨区域超低延时架构设计与网络优化实践
  6. WINDOWS下与LINUX下写C程序的区别
  7. Bootstrap--导航栏样式编辑
  8. 负载均衡 > 用户指南 > 证书管理 > 证书要求
  9. 【LOJ2127】「HAOI2015」按位或
  10. 2019118_四个化学数据分析(4)
  11. 「leetcode」110.平衡二叉树
  12. 阿里云怎么进入mysql_阿里云进入mysql数据库
  13. 欧姆龙nb触摸屏通信_313C和欧姆龙NB触摸屏怎么通讯
  14. 三星s8文档有html,别找了 你想知道的三星S8一切都在这里
  15. 转大神的日志 【大杂烩】杂7杂8的东西
  16. 大数据面试题(一):HDFS核心高频面试题
  17. android 触控优化,太滑手了,安卓这款触控优化神器要逆天!
  18. 20个令人疯狂的投资事实
  19. api21最新导航箭头动画的使用
  20. 重庆三峡学院计算机宋小令,重庆三峡学院考研研究生导师简介-肖玉峰

热门文章

  1. 基于Golang的CLI 命令行程序开发
  2. 【Datawhale-Python】Task1
  3. 2022-2028年中国低氧铜杆行业市场研究及前瞻分析报告
  4. Go 知识点(08) — 对未初始化的 channel 进行读写操作
  5. 2022-2028年中国超韧尼龙行业市场调查分析及未来前景分析报告
  6. python中的match和search的区别
  7. 五分钟搭建一个基于BERT的NER模型
  8. LeetCode中等题之煎饼排序
  9. CloudHub概述
  10. WebRTC框架中的硬件加速