麻烦问一下,程序里面调用__set_FAULTMASK(1);NVIC_SystemReset();这两句进行软件复位,程序运行到NVIC_SystemReset中的__DSB()就挂死不往下进行复位操作了,请问这是什么情况?你们有遇到过这类的问题么?
/** \brief System Reset
The function initiates a system reset request to reset the MCU.
*/
__STATIC_INLINE void NVIC_SystemReset(void)
{
__DSB(); /* Ensure all outstanding memory accesses included
buffered write are completed before reset */
SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */
__DSB(); /* Ensure completion of memory access */
while(1); /* wait until reset */
}
没有用我提供给你的工程试么?
我发给你的工程,这个重启一直都挂死,但是我把内核由CORE_M3改成CORE_M4,重启功能就正常了~
现在就是不知道导致这个问题的原因,希望帮忙分析一下~
您好,
请提供可以复现问题的完成工程,和芯片的全称,我帮您试一下,谢谢。
麻烦提供一个邮箱,我把工程包发给你~
一个简单的可以复现你问题的工程就可以,可以将机密隐去。
其实你也可以自己调试,将代码删减到最简,看是否还有问题。
工程直接附在这里就行:
哦对了,之前的回复忘了提了,芯片型号为LPC1857,还麻烦您帮忙看一下是那边的问题导致没有重启成功,这个问题困扰我好久了~
谢谢~
工程怎么提供给你