UCOSIII软件定时器
1、UCOSIII软件定时器简介
1.1、软件定时器简介:
定时器本质是递减计数器,当计数器减到零时可以触发某种动作的执行,这个动作通过回调函数实现。当定时器计时完成时,定义的回调函数就会被立即调用,应用程序可以有任意数量的定时器,UCOSIII中定时器的时间分辨率有一个 OS_CFG_TMR_TASK_RATE_HZ
,单位为HZ,默认为100HZ
注意!一定要避免在回调函数中使用阻塞调用或者可以阻塞或删除定时器任务的函数。
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用来对该事件或条件进行响应。
1.2、软件定时器API函数:
函数名 | 作用 |
---|---|
OSTmrcreate() | 创建定时器并制定运行模式 |
OSTmrDel() | 删除定时器 |
OSTmrRemainGet() | 获取定时器的剩余时间 |
OSTmrStart() | 启动定时器计数 |
OSTmrStateGet() | 获取当前定时器状态 |
OSTmrStop() | 停止计数器倒计时 |
2、UCOSIII软件定时器工作模式
2.1、创建定时器:
创建软件定时器使用函数OSTmrCreate()
void OSTmrCreate (OS_TMR *p_tmr,CPU_CHAR *p_name,OS_TICK dly,OS_TICK period,OS_OPT opt,OS_TMR_CALLBACK_PTR p_callback,void *p_callback_arg,OS_ERR *p_err)
软件定时器(定义):
struct os_tmr {OS_OBJ_TYPE Type;CPU_CHAR *NamePtr; /* Name to give the timer */OS_TMR_CALLBACK_PTR CallbackPtr; /* Function to call when timer expires */void *CallbackPtrArg; /* Argument to pass to function when timer expires */OS_TMR *NextPtr; /* Double link list pointers */OS_TMR *PrevPtr;OS_TICK Match; /* Timer expires when OSTmrTickCtr matches this value */OS_TICK Remain; /* Amount of time remaining before timer expires */OS_TICK Dly; /* Delay before start of repeat */OS_TICK Period; /* Period to repeat timer */OS_OPT Opt; /* Options (see OS_OPT_TMR_xxx) */OS_STATE State;
#if OS_CFG_DBG_EN > 0uOS_TMR *DbgPrevPtr;OS_TMR *DbgNextPtr;
#endif
};
停止定时器:
CPU_BOOLEAN OSTmrStop (OS_TMR *p_tmr,OS_OPT opt,void *p_callback_arg,OS_ERR *p_err)
2.2、单次定时器:
单次定时器初始值( 也就是OSTmrCreate()函数中的参数dly )开始倒计数,直到为0调用回调并停止。单次定时器的定时器只执行一次。
2.2、周期模式(无初始化延迟):
创建定时器的时候我们可以设定为周期模式,当倒计时完成后,定时器调用回调函数,并重置计数器重新开始计时,一直循环性下去。如果在调用函数 OSTmrCreate() 创建周期定时器时让参数dly为0,那么定时器每个周期就是 period。
2.3、周期模式(有初始延迟):
周期定时器也可以设定为带初始化延迟时间的运行模式,使用函数 OSTmrCreate() 参数dly来确定第一个周期,以后的每个周期开始时将计数器值重置为 period
UCOSIII软件定时器相关推荐
- UCOSIII实时操作系统------软件定时器
文章目录 前言 一.概述 二.使用步骤 1.创建软件定时器 2.启动软件定时器 3.停止软件定时器 4.删除软件定时器 总结 前言 UCOSIII实时操作系统------软件定时器 提示:以下是本篇文 ...
- 单片机裸机实用组件--软件定时器、时间戳
单片机裸机实用组件–软件定时器.时间戳 之前写过一篇关于单片机定时器延时计时功能的博客 ,刚工作的时候搞得现在看来还是比较糙的,是时候整一个新的了. base_timer 单片机裸机适用的定时器小组件 ...
- freeRtos学习笔记 (6)软件定时器
freeRtos学习笔记 freeRtos软件定时器 软件定时器需要注意事项 软件定时器的精度基于时钟节拍,例如系统时钟节拍为10ms, 软件定时器定时时间必须是10ms的整数倍,因此软件定时器一般用 ...
- 定时器回调函数怎么写_ESP8266_04管脚控制与软件定时器
这一节主要有两部分内容:1.管脚的控制:2.软件定时器的使用. 先说定时器,ESP8266内部的定时器分为软件定时器和硬件定时器.手册中指出硬件定时器其实就跟单片机里的timer一样,而软件定时器纯粹 ...
- μC/OS-II软件定时器的分析与测试
引 言 μC/OS-II操作系统是建立在微内核基础上的实时操作系统,抢占式多任务.微内核.移植性好等特点,使其在诸多领域都有较好的应用. 在μC/OS-II 2.83及其以后的版本中,一个较大的 ...
- RTX5 | 软件定时器02 - 创建一个软件定时器(连续运行)
文章目录 一.前言 二.实验目的 三.API 3.1.osTimerNew 3.2.osTimerStart 四.代码 4.1.main.h 4.2.main.c 五.Event Recorder调试 ...
- RTX5 | 软件定时器01 - 创建一个软件定时器(单次运行)
文章目录 一.前言 二.实验目的 三.API 3.1.osTimerNew 3.2.osTimerStart 四.代码 4.1.main.h 4.2.main.c 五.Event Recorder调试 ...
- 8.FreeRTOS学习笔记-软件定时器
基本概念 软件定时器的回调函数类似硬件的中断服务函数,所以,回调函数也要快进快出,而且回调函数中不能有任何阻塞任务运行的情况,例如不可以使用vTaskDelay() FreeRTOS 提供的软件定时器 ...
- FreeRTOS源码分析与应用开发06:软件定时器
目录 1. 概述 1.1 软件定时器 & 硬件定时器 1.2 软件定时器精度 1.3 单次模式 & 周期模式 2. 软件定时器组件 2.1 定时器任务 2.2 定时器列表 2.3 定时 ...
最新文章
- 【linux】lsof的常用命令汇总
- window.open在Safari中不能打开
- 通过超图在网页上加载obj格式3D模型
- delphi精品项目源码_项目是如何死掉的?太过真实!
- ITK:将颜色图应用于标签图并将其叠加在图像上
- PHP魔术常量trait
- centos7挂载nas存储_CentOS7搭建NAS文件共享存储
- LeetCode 1799. N 次操作后的最大分数和(回溯 / 状态压缩DP)
- Android SDCard UnMounted 流程分析(三)
- fastjson 添加key value_采坑系列—fastjson
- 4.2V锂电池充电、放电保护电路分享
- 游戏付费用户RFM分析案例
- 产品战略与战术之行业分析
- 使用小程序云开发添加背景音乐
- perf 性能分析实例——使用perf优化cache利用率
- mac mysql 自动启动_Mac设置Mysql开机启动
- 炒菜机器人“精确”破题中餐标准化
- Mac和iPhone的浏览器接力功能。如何不利用safari接力。
- (私人收藏)[开发必备]最全JQuery离线快速查找手册(可查询可学习,带实例)
- 计算机考研只考一门“软件工程”的院校汇总