SXSJBD 发表于 2022-1-24 15:03:42

FREERTOS系统 调用xPortStartScheduler()时进入硬件错误中断

采用STM32CUBEMX生成的Freertos操作系统代码,配置系统时钟是TIM10.发现程序进入硬件错误中断,反复排查后程序在vTaskStartScheduler这个函数中的prvPortStartFirstTask();函数里进入了硬件错误中断。请问这个该怎么解决呢?调整系统控制的中断优先级也没啥用。

在线等!急! 谢谢了

SXSJBD 发表于 2022-1-24 15:51:30

进一步的查找,发现在以下函数中进入硬件错误中断
osStatus_t osDelay (uint32_t ticks) {
osStatus_t stat;

if (IS_IRQ()) {
    stat = osErrorISR;
}
else {
    stat = osOK;

    if (ticks != 0U) {
      vTaskDelay(ticks);
    }
}

return (stat);
}
程序开始运行后,第一次进入StartDefaultTask()函数中的osDelay(1);函数里。程序会连续两次调用vTaskDelay(ticks);第一次调用完vTaskDelay(ticks);的时候,程序没有到return 直接到if,最后第二次到vTaskDelay(ticks);后,在运行就进入硬件错误中断。

propu 发表于 2023-8-25 20:05:19

这个找到原因了吗

caicaptain2 发表于 2023-8-28 10:36:38

按理说,cubemx配置的freertos可以无脑运行的。 先看看定时器systic的配置有没有冲突,不要和hal的定时器或者其他自定义定时器搞混了,再看看堆栈配置。

iihj 发表于 2024-4-16 11:25:07

老哥你现在有什么解决方法吗?

iihj 发表于 2024-4-16 11:28:14

老哥找到问题了吗?
页: [1]
查看完整版本: FREERTOS系统 调用xPortStartScheduler()时进入硬件错误中断