Nordic52840SDK学习之定时器
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学习之定时器的更多相关文章
- JavaScript学习05 定时器
JavaScript学习05 定时器 定时器1 用以指定在一段特定的时间后执行某段程序. setTimeout(): 格式:[定时器对象名=] setTimeout(“<表达式>”,毫秒) ...
- boost asio 学习(六) 定时器
http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=7 6 定时器 ...
- Go组件学习——cron定时器
1 前言 转到Go已经将近三个月,写业务代码又找到了属于Go的条件反射了. 后置声明和多参数返回这些Go风格代码写起来也不会那么蹩脚,甚至还有点小适应~ 反而,前几天在写Java的时候,发现Java怎 ...
- STM32定时器学习---基本定时器
STM32F1系列的产品,除了互联网产品外,工作8个,3种定时器,其中一种就是基本定时器.那么STM32单片机的基本定时器如何操作以及编程呢? 下面我们就来详细的了解一下 STM32F1系列的产品,除 ...
- JMeter学习-021-JMeter 定时器(Synchronizing Timer)之集合点应用
性能测试中我们经常提到一个概念就是“并发”,其实在实际真实的性能测试中是不存在真正的并发的.为了更真实的模拟对一个请求的并发测试场景,我们通常设置一个集合点,JMeter中提供了这样的一个功能设置. ...
- quick-cocos2d-x学习笔记—定时器
定时器用的地方还是比较多的,游戏中的逻辑判断很多都是采用每帧执行.quick对于schedule的封装在scheduler这个lua文件中.如果是第一次接触quick的话,可能按照官方的api来写一个 ...
- JS学习笔记 -- 定时器,提示框的应用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- STM32学习笔记——定时器中断(向原子哥学习)
定时器中断 STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器.在本章中,我们将利 ...
- JMeter学习-021-JMeter 定时器的应用
定时器类型 下面我们看下jmeter提供了哪些定时器组件: 固定定时器 高斯随机定时器 Uniform Random Timer Synchronizing Timer Poisson Random ...
随机推荐
- Unity 基于excel2json批处理读取Excel表并反序列化
excel2json是一款将Excel表格文件快速生成json和C#数据类的高效插件,详情了解如下: https://neil3d.github.io/coding/excel2json.html 该 ...
- element ui表格实现单选 但是单选取消会报错
1.在el-table中添加两个事件 @selection-change="handleSelectionChange" @current-change="choos ...
- 安装nginx1.10和状态模块
环境 操作系统: Centos7.2 内核: 3.10.0-327.el7.x86_64 nginx: nginx-1.10.0.tar.gz 安装: 1.安装依赖包 yum -y install g ...
- c++ string类型举例(递归预习的边界)
#include <iostream> #include <string> using namespace std; int main ( ) { string str; // ...
- SQL数据库优化总结
1.在表中建立索引优先考虑 where.group by使用到的数据. 2.查询的sql语句中不要使用select * ,因为会返回许多无用的字段降低查询的效率,应该使用具体的字段代替*,只返回使用到 ...
- JavaScript高级程序设计(第三版) 2/25
第一章 JavaScript简介 javascript 跟 java没有任何联系,可以这么说,基本上区别就相当于,老婆跟老婆饼.只是因为当初Netscape(js的公司)想搭上媒体热炒的Java的顺风 ...
- Nodejs同步和异步编程
同步API:只有当前API执行完成后,才能继续执行下一个API:异步API:当前API的执行不会阻塞后续代码的执行. 同步异步代码执行顺序 同步:从上到下依次执行,前面代码会阻塞后面代码的执行.异步: ...
- Python获取当前时间_获取格式化时间_格式化日期
Python获取当前时间_获取格式化时间: Python获取当前时间: 使用 time.time( ) 获取到距离1970年1月1日的秒数(浮点数),然后传递给 localtime 获取当前时间 #使 ...
- CF EC 86 E Placing Rooks 组合数学
LINK:Placing Rooks 丢人现场.jpg 没看到题目中的条件 放n个rook 我以为可以无限放 自闭了好半天. 其实只用放n个.那么就容易很多了. 可以发现 不管怎么放 所有列/所有行 ...
- 把项目从码云上clone到IntelliJ IDEA
前期工作:安装并已配置好git,并且IDEA已经配置好git了 操作如下: 1) 在IDEA启动页面选择Get from Version Control 2) 打开码云上想要clon ...