用 ST的 HAL库和 CubeMX生成的代码, ST会把所有中断都放在 stm32f4xx_it.c 中 其中有一个是 PendSV_Handler,这个在 uC中是用于任务切换的,但是在 uC中,这个任务切换函数是 OS_CPU_PendSVHandler,为了不修改启动文件以及uC代码,我把OS_CPU_PendSVHandler直接放在了 PendSV_Handler函数中,就是下面这样:
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] This function handles Pendable request for system service.
*/
void PendSV_Handler(void)
{
//调用 uC系统的 PendSV异常处理函数
OS_CPU_PendSVHandler();
}
结果悲剧了,运行后各种硬件错误,直接进入到 HardFault_Handler,而且每次的错误原因还不固定,这是为什么啊?没想明白原因,uC的这个函数不能被别的函数调用?
|