| vPortGenerateSimulatedInterrupt() | 设置要产生的中断,并触发模拟中断服务例程 |
| vPortSetInterruptHandler() | 安装模拟中断服务例程的处理程序 |
-
void vPortGenerateSimulatedInterrupt( uint32_t ulInterruptNumber )
其中ulInterruptNumber是要模拟的中断号,0号被YIELD中断占用,1号被TICK中断占用,2号被用于终止已删除的FreeRTOS任务的Windows线程,所以只能设置为3~31,一共可以模拟29个中断。
-
void vPortSetInterruptHandler( uint32_t ulInterruptNumber, uint32_t (*pvHandler)( void ) )
pvHandler应指向要安装的断号的处中理程序函数。
特别要注意中断处理程序pvHandler函数的返回值,如果需要请求切换上下文,应该返回pdTRUE。
这是因为当一个低优先级的任务被中断打断后,如果在该中断服务例程执行过程中完成了某事件,并触发了另一个更高优先级的任务。此时,从中断服务例程切出后肯定希望调度高优先级的就绪任务。这就要求做上下文切换(低优先级的任务--->高优先级的就绪任务)。
参考:A free FreeRTOS simulator or emulator that runs in Windows and uses Visual Studio or Eclipse and MingW as its compiler and IDE Defining and Using Simulated Interrupt Service Routines
vPortGenerateSimulatedInterrupt函数用于设置和触发模拟中断,而vPortSetInterruptHandler用于安装中断处理程序。中断号0和1被系统占用,用户可模拟3~31号中断,最多29个。中断处理程序的返回值至关重要,若需切换上下文,应返回pdTRUE,以便在中断后调度高优先级任务。
2014

被折叠的 条评论
为什么被折叠?



