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 ...
随机推荐
- React Native 控制一个component的显示隐藏
// 首先在constructor里: this.state = { visible: false } // 然后在点击事件设置: this.setState({ visible: t ...
- Prime Ring Problem--------多重循环用递归来做
链接:https://vjudge.net/problem/UVA-524 题意:给出正整数n,输出以1开头,由2到n组合的字符序列,使相邻的数相加为素数,最后一个(关键信息为n大于1小于等于16), ...
- vue学习(十四) 条件搜索框动态查询表中数据 数组的新方法
//html <div id="app"> <label> 名称搜索关键字: <input type="text" clasa=& ...
- 跟老刘学运维day02~新手必须掌握的Linux命令(2)
第2章 Linux命令 1.Shell 计算机硬件:由运算器.控制器.存储器.输入/输出设备等共同组成 Shell:人与硬件的翻译官,人要想使用硬件,需要服务程序 Bash四大好处: (1)通过上下方 ...
- transaction already active
这个问题是使用spring 事务管理时经常出现的错误,最开始时相当令我头疼,也不知道是哪里出现的问题.在网上找了一阵后,依然无解.意思就是说上一个事务处于激活状态中,不能开始新的数据库更新操作. // ...
- 移动端宽高适配JS
//定义全局变量 var winWidth = 0; /*窗口宽度*/ var winHeight = 0; /*窗口高度*/ //函数区 //实时获取浏览器窗口大小,当窗口大小变化开始相应操作 fu ...
- Python爬虫开发与项目实战pdf电子书|网盘链接带提取码直接提取|
Python爬虫开发与项目实战从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算.大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应 ...
- pandas_重采样多索引标准差协方差
# 重采样 多索引 标准差 协方差 import pandas as pd import numpy as np import copy # 设置列对齐 pd.set_option("dis ...
- PHP usleep() 函数
实例 延迟执行当前脚本 5 秒(5000000 微秒):高佣联盟 www.cgewang.com <?php echo date('h:i:s') . "<br>" ...
- Skill 导出所有Layer信息用于tapeout
https://www.cnblogs.com/yeungchie/ 用于在 tapeout 前要走的流程,foundry 会需要你上传一份芯片用到的所有 Layer 的 excel 文档. TAB ...