【FreeRTOS】小白进阶之如何使用FreeRTOS软件定时器(一)
【摘要】
介绍软件定时器使用基础:单次触发和自动重载定时器。
1、头文件声明
#include "FreeRTOS.h"#include "task.h"#include "timers.h"#include "supporting_functions.h" // 定义定时器相关时间#define mainONE_SHOT_TIMER_PER...
介绍软件定时器使用基础:单次触发和自动重载定时器。
1、头文件声明
-
#include "FreeRTOS.h"
-
#include "task.h"
-
#include "timers.h"
-
#include "supporting_functions.h"
-
-
// 定义定时器相关时间
-
#define mainONE_SHOT_TIMER_PERIOD ( pdMS_TO_TICKS( 3333UL ) )
-
#define mainAUTO_RELOAD_TIMER_PERIOD ( pdMS_TO_TICKS( 500UL ) )
-
-
// 定时器回调函数
-
static void prvOneShotTimerCallback( TimerHandle_t xTimer );
-
static void prvAutoReloadTimerCallback( TimerHandle_t xTimer );
2、创建和启动软件定时器
-
int main( void )
-
{
-
TimerHandle_t xAutoReloadTimer, xOneShotTimer;
-
BaseType_t xTimer1Started, xTimer2Started;
-
-
// 创建软件定时器:单次执行
-
software timer in xOneShotTimer. */
-
xOneShotTimer = xTimerCreate( "OneShot", // 名字
-
mainONE_SHOT_TIMER_PERIOD, // 多久开始执行
-
pdFALSE, // 设置为单次执行
-
0,
-
prvOneShotTimerCallback ); // 回调函数
-
-
// 创建软件定时器:自动重载
-
xAutoReloadTimer = xTimerCreate( "AutoReload", // 名字
-
mainAUTO_RELOAD_TIMER_PERIOD, // 重载需要时间
-
pdTRUE, // 重载模式
-
0,
-
prvAutoReloadTimerCallback ); // 回调函数
-
-
if( ( xOneShotTimer != NULL ) && ( xAutoReloadTimer != NULL ) )
-
{
-
// 启动定时器
-
xTimer1Started = xTimerStart( xOneShotTimer, 0 );
-
xTimer2Started = xTimerStart( xAutoReloadTimer, 0 );
-
-
if( ( xTimer1Started == pdPASS ) && ( xTimer2Started == pdPASS ) )
-
{
-
// 开始调度
-
vTaskStartScheduler();
-
}
-
}
-
-
for( ;; );
-
return 0;
-
}
3、定时器回调函数
-
static void prvOneShotTimerCallback( TimerHandle_t xTimer )
-
{
-
static TickType_t xTimeNow;
-
-
xTimeNow = xTaskGetTickCount();
-
-
vPrintStringAndNumber( "One-shot timer callback executing", xTimeNow );
-
}
-
-
static void prvAutoReloadTimerCallback( TimerHandle_t xTimer )
-
{
-
static TickType_t xTimeNow;
-
-
xTimeNow = xTaskGetTickCount();
-
-
vPrintStringAndNumber( "Auto-reload timer callback executing", xTimeNow );
-
}
文章来源: blog.csdn.net,作者:简一商业,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/liwei16611/article/details/82587673
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)