Nordic 52840 SDK学习之定时器

今天开始学习52840SDK,特在此处记录学习内容,防止以后忘记,或许可以给以后的初学者提供一些帮助。如有错误,请发邮件至843036544@qq.com,我看到会及时改正。

当前只是初学该sdk,内容可能比较简单,不喜勿喷。

简介:定时器部分,主要是写了一些测试代码(在源sdk中添加了一些测试接口),用来学习定时器的使用。

步骤:

1)包含头文件app_timer.h

2)定义Timer id和interval

其中id用来区分不同功能的定时器,interval表示定时器的间隔(即每隔多长时间进入定时器中断函数)

3)Timer初始化(该初始化在原始sdk中已经调用)

4)创建一个定时器Timer

ret_code_t app_timer_create(app_timer_id_t const *      p_timer_id,
                            app_timer_mode_t            mode,
                            app_timer_timeout_handler_t timeout_handler);

p_timer_id: 定时器id

mode:APP_TIMER_MODE_SINGLE_SHOT(只进入一次);APP_TIMER_MODE_REPEATED(重复进入)

timeout_handler:定时器中断处理函数

5)启动定时器

ret_code_t app_timer_start(app_timer_id_t timer_id, uint32_t timeout_ticks, void * p_context)

timeout_ticks: 定时器启动后多长时间进入定时器处理函数

p_context: 如果有参数需要传入定时器处理函数,可通过该参数传入

6)停止定时器

ret_code_t app_timer_stop(app_timer_id_t timer_id);

7)定时器其他函数

ret_code_t app_timer_stop_all(void);

uint32_t app_timer_cnt_get(void);

void app_timer_pause(void);

void app_timer_resume(void);

uint8_t app_timer_op_queue_utilization_get(void);

uint32_t app_timer_cnt_diff_compute(uint32_t   ticks_to, uint32_t   ticks_from);

其中,我只测试了pause函数,该函数会将所有timer都暂停。 具官方文档介绍,该函数用于debug。

This function can be used for debugging purposes to ensure that application is halted when entering a breakpoint.

其他函数后续使用的时候在继续添加使用方法。

下面是我的测试代码:

#include "app_timer.h"

APP_TIMER_DEF( ipl_app_timer_id );
#define IPL_TIME_INTERVAL APP_TIMER_TICKS( 1000 ) //每隔1000ms进入一次 APP_TIMER_DEF( ipl_app_timer_id2 );
#define IPL_TIME_INTERVAL_2 APP_TIMER_TICKS( 500 ) //每隔500ms进入一次 void ipl_app_timerout_handle( void *p_context )
{
static int count = ;
count ++; NRF_LOG_INFO( "ipl app timer count=%d\n",count ); if( count== )
{
//app_timer_pause(); //此次调用该函数,会导致timer1和timer2都停止
app_timer_stop( ipl_app_timer_id );
}
} void ipl_app_timerout_handle2( void *p_context )
{
static int num = ;
num ++; NRF_LOG_INFO( "ipl app timer2 num=%d\n",num ); if( num== )
{
app_timer_start( ipl_app_timer_id, IPL_TIME_INTERVAL, NULL );
}
} /**@brief Function for ipl timer test init.
*/
ret_code_t ipl_app_timers_init( void )
{
ret_code_t err_code; err_code = app_timer_create( &ipl_app_timer_id, APP_TIMER_MODE_REPEATED, ipl_app_timerout_handle );
if( err_code != NRF_SUCCESS )
{
NRF_LOG_INFO( "Create timer error\n" );
return NRF_ERROR_NULL;
} app_timer_start( ipl_app_timer_id, IPL_TIME_INTERVAL, NULL );
return NRF_SUCCESS;
} ret_code_t ipl_app_timers2_init( void )
{
ret_code_t err_code; err_code = app_timer_create( &ipl_app_timer_id2, APP_TIMER_MODE_REPEATED, ipl_app_timerout_handle2 );
if( err_code != NRF_SUCCESS )
{
NRF_LOG_INFO( "Create timer error\n" );
return NRF_ERROR_NULL;
} app_timer_start( ipl_app_timer_id2, IPL_TIME_INTERVAL_2, NULL );
return NRF_SUCCESS;
} int main( void )
{
timers_init(); //初始化定时器
ipl_app_timers_init();
ipl_app_timers2_init(); ...... }

Nordic52840SDK学习之定时器的更多相关文章

  1. JavaScript学习05 定时器

    JavaScript学习05 定时器 定时器1 用以指定在一段特定的时间后执行某段程序. setTimeout(): 格式:[定时器对象名=] setTimeout(“<表达式>”,毫秒) ...

  2. boost asio 学习(六) 定时器

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=7 6 定时器 ...

  3. Go组件学习——cron定时器

    1 前言 转到Go已经将近三个月,写业务代码又找到了属于Go的条件反射了. 后置声明和多参数返回这些Go风格代码写起来也不会那么蹩脚,甚至还有点小适应~ 反而,前几天在写Java的时候,发现Java怎 ...

  4. STM32定时器学习---基本定时器

    STM32F1系列的产品,除了互联网产品外,工作8个,3种定时器,其中一种就是基本定时器.那么STM32单片机的基本定时器如何操作以及编程呢? 下面我们就来详细的了解一下 STM32F1系列的产品,除 ...

  5. JMeter学习-021-JMeter 定时器(Synchronizing Timer)之集合点应用

    性能测试中我们经常提到一个概念就是“并发”,其实在实际真实的性能测试中是不存在真正的并发的.为了更真实的模拟对一个请求的并发测试场景,我们通常设置一个集合点,JMeter中提供了这样的一个功能设置. ...

  6. quick-cocos2d-x学习笔记—定时器

    定时器用的地方还是比较多的,游戏中的逻辑判断很多都是采用每帧执行.quick对于schedule的封装在scheduler这个lua文件中.如果是第一次接触quick的话,可能按照官方的api来写一个 ...

  7. JS学习笔记 -- 定时器,提示框的应用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. STM32学习笔记——定时器中断(向原子哥学习)

    定时器中断 STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器.在本章中,我们将利 ...

  9. JMeter学习-021-JMeter 定时器的应用

    定时器类型 下面我们看下jmeter提供了哪些定时器组件: 固定定时器 高斯随机定时器 Uniform Random Timer Synchronizing Timer Poisson Random ...

随机推荐

  1. Unity 基于excel2json批处理读取Excel表并反序列化

    excel2json是一款将Excel表格文件快速生成json和C#数据类的高效插件,详情了解如下: https://neil3d.github.io/coding/excel2json.html 该 ...

  2. element ui表格实现单选 但是单选取消会报错

    1.在el-table中添加两个事件  @selection-change="handleSelectionChange"  @current-change="choos ...

  3. 安装nginx1.10和状态模块

    环境 操作系统: Centos7.2 内核: 3.10.0-327.el7.x86_64 nginx: nginx-1.10.0.tar.gz 安装: 1.安装依赖包 yum -y install g ...

  4. c++ string类型举例(递归预习的边界)

    #include <iostream> #include <string> using namespace std; int main ( ) { string str; // ...

  5. SQL数据库优化总结

    1.在表中建立索引优先考虑 where.group by使用到的数据. 2.查询的sql语句中不要使用select * ,因为会返回许多无用的字段降低查询的效率,应该使用具体的字段代替*,只返回使用到 ...

  6. JavaScript高级程序设计(第三版) 2/25

    第一章 JavaScript简介 javascript 跟 java没有任何联系,可以这么说,基本上区别就相当于,老婆跟老婆饼.只是因为当初Netscape(js的公司)想搭上媒体热炒的Java的顺风 ...

  7. Nodejs同步和异步编程

    同步API:只有当前API执行完成后,才能继续执行下一个API:异步API:当前API的执行不会阻塞后续代码的执行. 同步异步代码执行顺序 同步:从上到下依次执行,前面代码会阻塞后面代码的执行.异步: ...

  8. Python获取当前时间_获取格式化时间_格式化日期

    Python获取当前时间_获取格式化时间: Python获取当前时间: 使用 time.time( ) 获取到距离1970年1月1日的秒数(浮点数),然后传递给 localtime 获取当前时间 #使 ...

  9. CF EC 86 E Placing Rooks 组合数学

    LINK:Placing Rooks 丢人现场.jpg 没看到题目中的条件 放n个rook 我以为可以无限放 自闭了好半天. 其实只用放n个.那么就容易很多了. 可以发现 不管怎么放 所有列/所有行 ...

  10. 把项目从码云上clone到IntelliJ IDEA

       前期工作:安装并已配置好git,并且IDEA已经配置好git了   操作如下:   1) 在IDEA启动页面选择Get from Version Control   2) 打开码云上想要clon ...