如何使用 FreeRTOS 在任务中定期执行功能?
How to execute a function periodicly in a task with FreeRTOS?
我想在 1 毫秒调用的任务中每 10 毫秒执行一个函数。你知道是否有一个功能可以在不阻塞任务的情况下做到这一点吗?
祝你有个愉快的一天!
我会结合使用 xTaskCheckForTimeOut 和 vTaskSetTimeOutState。请参阅 API 文档中的示例 https://freertos.org/xTaskCheckForTimeOut.html
感谢 HS2,它运行良好。
这是我如何在 1 毫秒任务中每 10 毫秒执行一些代码的示例。
xTimeOutType x_timeout;
portTickType openTimeout;
vTaskSetTimeOutState(&x_timeout);
openTimeout = 10; /*ms*/
while(1)
{
//...
//...
if(xTaskCheckForTimeOut(&x_timeout, &openTimeout) == pdTRUE)
{
// do some stuff here
openTimeout = 10; /*reload the 10ms*/
}
//...
//...
}
我想在 1 毫秒调用的任务中每 10 毫秒执行一个函数。你知道是否有一个功能可以在不阻塞任务的情况下做到这一点吗?
祝你有个愉快的一天!
我会结合使用 xTaskCheckForTimeOut 和 vTaskSetTimeOutState。请参阅 API 文档中的示例 https://freertos.org/xTaskCheckForTimeOut.html
感谢 HS2,它运行良好。 这是我如何在 1 毫秒任务中每 10 毫秒执行一些代码的示例。
xTimeOutType x_timeout;
portTickType openTimeout;
vTaskSetTimeOutState(&x_timeout);
openTimeout = 10; /*ms*/
while(1)
{
//...
//...
if(xTaskCheckForTimeOut(&x_timeout, &openTimeout) == pdTRUE)
{
// do some stuff here
openTimeout = 10; /*reload the 10ms*/
}
//...
//...
}