将 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的这个函数不能被别的函数调用?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
kokoromi
1楼-- · 2019-07-20 19:26
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-20 22:22
kokoromi 发表于 2017-6-20 20:39
最后还是自己搞明白了,说一下吧:

之所以不能采用上述调用的方式是因为链接寄存器 LR的问题,进入系统 ...

谢谢分享

一周热门 更多>