gpt4 book ai didi

c - FreeRTOS 任务未恢复

转载 作者:行者123 更新时间:2023-11-30 15:06:26 26 4
gpt4 key购买 nike

我正在使用 ARM Cortex-M4 微 Controller 来开发带有 FreeRTOS 的应用程序。

为了精确计时,我想使用基于中断的计时器。中断具有适当的优先级,因此它应该能够调用 FreeRTOS API。 ISR 被定期调用,并且应该唤醒一个任务,如给定代码所示:

/* This function is executed by the task I'd like to resume */
void hello_task() {
while (1) {
vTaskSuspend(task);
printf("Tick\n");
}
}

/* The ISR is called by an interrupt about 200 times per second */
void Timer_IRQHandler() {
CLEAR_INTERRUPT_FLAG();
xTaskResumeFromISR(task);
}

ISR 正确执行,但任务随后无法恢复。有人对这种行为有解释吗?

谢谢!

最佳答案

阅读documentation for xTaskResumeFromISR() 。它告诉你不要做你正在做的事情。

直接任务通知提供了执行您所描述的操作的最佳(最轻量级和最高效)方法。以下页面上有一个有效的示例:http://www.freertos.org/RTOS_Task_Notification_As_Counting_Semaphore.html

关于c - FreeRTOS 任务未恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com