3

我正在尝试使用 FreeRTOS 的xSemaphoreGiveFromISR函数和随附的portEND_SWITCHING_ISR宏从处理 I2C 事务结束的中断中提供信号量。

每次我这样做时,我都会遇到程序的应用程序堆栈溢出挂钩函数。工作版本的唯一变化是将此行添加到 ISR,并且我将堆栈的大小增加了一倍819216384但没有帮助。

有人对我得到了什么有想法吗?

我的configCHECK_FOR_STACK_OVERFLOW值为 1。

4

1 回答 1

1

您可能需要检查中断是否以与 RTOS configKERNEL_INTERRUPT_PRIORITY 相同的优先级运行。

不幸的是,它没有明确说明。

我遇到了与 RTOS 默认配置设置的中断优先级低于芯片默认值相同的问题,至少对于 Microchip 设备而言。

您还需要为每个任务提供足够的内存来处理优先级,如果您有任何 taskYield,它必须是中断的最后一条指令。

于 2014-01-03T10:16:56.550 回答