FreeRTOS 定时器回调函数传参:500ms 周期传递 uint8_t 类型参数
-
首先要在 FreeRTOS 中创建一个定时器,可以使用
xTimerCreate函数来实现。需要设置定时器的周期和回调函数。 -
在回调函数中,可以使用 FreeRTOS 提供的
pvTimerGetTimerID函数来获取定时器的参数。获取到参数后,就可以进行处理并输出。 -
在回调函数中,可以使用 FreeRTOS 提供的
vTimerSetTimerID函数来设置定时器的参数。参数可以是一个指针,也可以是一个数字或字符等基本数据类型。
下面是一个示例代码:
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
void vTimerCallback(TimerHandle_t xTimer)
{
uint8_t pInd = (uint8_t)pvTimerGetTimerID(xTimer);
printf('pInd = %d\n', pInd);
}
void createTimer()
{
TimerHandle_t xTimer = xTimerCreate('MyTimer', pdMS_TO_TICKS(500), pdTRUE, (void*)0, vTimerCallback);
if (xTimer != NULL)
{
uint8_t pInd = 1;
xTimerChangePeriod(xTimer, pdMS_TO_TICKS(500), pdMS_TO_TICKS(0));
xTimerReset(xTimer, pdMS_TO_TICKS(0));
vTimerSetTimerID(xTimer, (void*)pInd);
}
}
int main()
{
createTimer();
vTaskStartScheduler();
return 0;
}
原文地址: https://www.cveoy.top/t/topic/oXbO 著作权归作者所有。请勿转载和采集!