当前位置:首页 > 编程笔记 > 正文
已解决

FreeRTOS-定时器\二值信号互斥信号\事件组

来自网友在路上 191891提问 提问时间:2023-11-05 08:37:51阅读次数: 91

最佳答案 问答题库918位专家为你答疑解惑

FreeRTOS整体知识框架可以参考下文:
FreeRTOS整体知识框架

一. FreeRTOS定时器

FreeRTOS定时器

博文路径

FreeRTOS提供了一种软件定时器,用来快速实现一些周期性的操作,并且节约了硬件定时器。不过尽量还是不要做过多的操作,以免影响其他定时器的准度。

demo

演示了定时器定义,回调函数会每一秒进入一次,等到10次之后,定时器被销毁。

TimerHandle_t xTimerUser; // 定义句柄// 定时器回调函数格式
void vTimerCallback( TimerHandle_t xTimer )
{// do something no block// 获取溢出次数static unsigned int ulCount =0;ulCount= ( unsigned int ) pvTimerGetTimerID( xTimer );// 累积溢出次数++ulCount; // 更新溢出次数vTimerSetTimerID( xTimer, ( void * ) ulCount );printf("get timer ulCount:%d\n",ulCount);if(ulCount == 10) {// 停止定时器xTimerStop( xTimer, 0 );}
}void app_main()
{// 申请定时器, 配置xTimerUser = xTimerCreate("Timer's name",/*调试用, 系统不用*/1000 / portTICK_PERIOD_MS, /*定时溢出周期, 单位是任务节拍数*/  pdTRUE,/*是否自动重载, 此处设置周期性执行*/( void * ) 0,/*记录定时器溢出次数, 初始化零, 用户自己设置*/vTimerCallback);/*回调函数*/if( xTimerUser != NULL ) {// 启动定时器, 0 表示不阻塞xTimerStart( xTimerUser, 0 );}
}

主要函数

定时器创建

TimerHandle_t xTimerCreate(const char * const pcTimerName,const TickType_t xTimerPeriodInTicks,const UBaseType_t uxAutoReload,void * const pvTimerID,TimerCallbackFunction_t pxCallbackFunction )

image-20220330203405671

定时器启动

BaseType_t xTimerStart( TimerHandle_t xTimer, TickType_t xTicksToWait )

image-20220330203444427

定时器停止

BaseType_t xTimerStop( TimerHandle_t xTimer, TickType_t xTicksToWait )

image-20220330203511279

定时器删除

BaseType_t xTimerDelete( TimerHandle_t xTimer, TickType_t xTicksToWait )

image-20220330203536966

定时器周期修改

BaseType_t xTimerChangePeriod( 	TimerHandle_t xTimer, TickType_t xNewPeriod, TickType_t xTicksToWait )

image-20220330203608488

定时器重启

BaseType_t xTimerReset( TimerHandle_t xTimer, TickType_t xTicksToWait )

image-20220330203641337

还有一系列的中断中使用的函数

img

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"FreeRTOS-定时器\二值信号互斥信号\事件组":http://eshow365.cn/6-32564-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!