在测算程序启动时间过程中偶然发现开启中断之后并没有马上执行,经过查找发现是因为在FreeRTOS没有vTaskStartScheduler之前就创建信号量或者消息等,导致FreeRTOS内核关闭了全局中断,等vTaskStartScheduler之后又开启全局中断才能正常执行中断程序。建议先创建一个初始化任务,在该任务里做硬件初始化等工作,之后再创建其他任务。如下:
int main(void)
{
xTaskCreate(SystemInitTask,"initTask",512,NULL,31, &SystemInitTask_Handle);
vTaskStartScheduler();
return 0;
}