STM35F103VB。一般在什么情况下会产生HardFaultException和MenManageException?在调试ucosII的时候,使用了用信号量(初始化为0),在一个高优先级任务中执行OSSemPend(),另一个低优先级任务执行OSSemPost()。程序一运行完OSSemPost()之前的任务后,就产生了这两个异常(在汇编代码中显示的进入MenManageException异常,而在启动代码显示却进入HardFaultException异常)。当把OSSemPost()去掉后,就不会产生了。另外,如果把信号初始化为1,那么,程序一执行到OSSemPend()就产生异常。改用邮箱,现象一摸一样。从这几个系统函数回来之后,就不能切换了。如果换成OSTaskSuspend()和OSTaskResume()就不会产生异常,可以正常的切换。 |