从0到1学习FreeRTOS:FreeRTOS 内核应用开发:(二十一)软件定时器 NO.2 函数接口讲解

从0到1学习FreeRTOS:FreeRTOS 内核应用开发:(二十一)软件定时器 NO.2 函数接口讲解

目录

一、软件定时器创建函数 xTimerCreate()

二、软件定时器启动函数:

三、软件定时器停止函数:

四、软件定时器任务:

五、软件定时器删除函数 xTimerDelete()


一、软件定时器创建函数 xTimerCreate()

        xTimerCreate()用于创建一个软件定时器,并返回一个句柄。 要想使用该函数函数必须在头文件FreeRTOSConfig.h中把宏configUSE_TIMERS 和configSUPPORT_DYNAMIC_ALLOCATION 均定义为 1(configSUPPORT_DYNAMIC_ALLOCATION 在 FreeRTOS.h 中默认定义为 1) , 并且需要把 FreeRTOS/source/times.c 这个 C 文件添加到工程中。

        软件定时器在创建成功后是处于休眠状态, 可以使用 xTimerStart()、 xTimerReset()、xTimerStartFromISR() 、 xTimerResetFromISR() 、 xTimerChangePeriod() 和xTimerChangePeriodFromISR()这些函数将其状态转换为活跃态

static TimerHandle_t Swtmr1_Handle =NULL; /* 软件定时器句柄 */
static TimerHandle_t Swtmr2_Handle =NULL; /* 软件定时器句柄 */
/* 周期模式的软件定时器 1,定时器周期 1000(tick)*/
Swtmr1_Handle=xTimerCreate((const char*)"AutoReloadTimer",
(TickType_t)1000,/* 定时器周期 1000(tick) */
(UBaseType_t)pdTRUE,/* 周期模式 */
(void* )1,/* 为每个计时器分配一个索引的唯一 ID */
(TimerCallbackFunction_t)Swtmr1_Callback); /* 回调函数 */
if (Swtmr1_Handle != NULL)
{
/********************************************************************
* xTicksToWait:如果在调用 xTimerStart()时队列已满,则以 tick 为单位指定调用任务应保持
* 在 Blocked(阻塞)状态以等待 start 命令成功发送到 timer 命令队列的时间。
* 如果在启动调度程序之前调用 xTimerStart(),则忽略 xTicksToWait。在这里设置等待时间为 0.
**********************************************************************/
xTimerStart(Swtmr1_Handle,0); //开启周期定时器
}
/* 单次模式的软件定时器 2,定时器周期 5000(tick)*/
Swtmr2_Handle=xTimerCreate((const char* )"OneShotTimer",
(TickType_t)5000,/* 定时器周期 5000(tick) */
(UBaseType_t )pdFALSE,/* 单次模式 */
(void*)2,/* 为每个计时器分配一个索引的唯一 ID */
(TimerCallbackFunction_t)Swtmr2_Callback);
if (Swtmr2_Handle != NULL)
{
xTimerStart(Swtmr2_Handle,0); //开启单次定时器
}
static void Swtmr1_Callback(void* parameter)
{
/* 软件定时器的回调函数,用户自己实现 */
}
static void Swtmr2_Callback(void* parameter)
{
/* 软件定时器的回调函数,用户自己实现 */
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值