将 OS_CPU_PendSVHandler 嵌套 PendSV_Handler 里出错,为什么?

2019-07-20 13:54发布

用ST的HAL库和 CubeMX生成的代码, ST会把所有中断都放在 stm32f4xx_it.c 中 其中有一个是 PendSV_Handler,这个在 uC中是用于任务切换的,但是在 uC中,这个任务切换函数是 OS_CPU_PendSVHandler,为了不修改启动文件以及uC代码,我把OS_CPU_PendSVHandler直接放在了 PendSV_Handler函数中,就是下面这样:

[mw_shl_code=c,true]/**
* @brief This function handles Pendable request for system service.
*/
void PendSV_Handler(void)
{
//调用 uC系统的 PendSV异常处理函数
OS_CPU_PendSVHandler();
}[/mw_shl_code]

结果悲剧了,运行后各种硬件错误,直接进入到 HardFault_Handler,而且每次的错误原因还不固定,这是为什么啊?没想明白原因,uC的这个函数不能被别的函数调用?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。