我的程序再创建系统之前,会使用HAL库来初始化系统时钟源。

这个过程中,我发现总是卡死。
进单步调试,打断点发现,只要我在配置HSE外部时钟的时候,if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)这里停下来再运行就能成功跑下去,不然连时钟配置的函数都跑不完就会进硬件错误中断中去。我找了半天没有找到原因。
往下看了一下,发现这个初始化时钟的函数内,会调HAL_GetTick,坑爹啊。
这个计时默认是由滴答中断产生的,而我因为创建系统,滴答中断就屏蔽掉了,使用的是系统的中断。
结果导致卡死的原因就是,因为uwTick的全局变量不累加,Systick_Handler不进去,导致了系统一直在等待HSE起振卡死进硬件错误中断。

所以我就只能删掉FreeRTOSConfig函数中的定义部分

但是这样系统就没得跑了啊,没有定时中断了啊。那就把系统的中断跑到Systick_Handler里面去。且,同时需要监控任务是否跑起来,跑起来才跑系统中断,不然只跑HAL_IncTick();
