1. ISR 独立于所有任务 尽管从效果上看,ISR,即中断服务程序是为了某个任务的功能在服务的,务必先强调一下:ISR 的代码不属于 FreeRTOS 任何一个任务代码的部分。每个 ISR 都是一个C语言函数,但它不是一个任务,也不会被任何一个任务所调用。 ISR 对堆栈的使用与任务不同。前面的连载中已经介绍过,FreeRTOS 对...
那么可能继续用更早被中断的任务的堆栈(注:这与平台有关。对于 ARM Cortex-m 系列平台上的实现,FreeRTOS 让任务运行在 thread mode, 使用PSP作堆栈指针,而 ISR 会切换到 handler mode, 使用MSP作为堆栈指针,于是所有 ISR 会共享一个堆栈)。