stm32软件复位的问题

[复制链接]
4033|3
 楼主| 759612761 发表于 2011-9-2 13:03 | 显示全部楼层 |阅读模式
如何使stm32复位,查到有以下这种方法
void NVIC_GenerateSystemReset(void)
{
SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;
}

void NVIC_SETFAULTMASK(void)
{
__SETFAULTMASK();
}
然后直接调用
NVIC_SETFAULTMASK();
GenerateSystemReset();
即可了。
可是我的库时3.0版本的,不包含以上函数。
handlike 发表于 2011-9-2 15:03 | 显示全部楼层
*((u32 *)0xE000ED0C) = 0x05fa0004;                 //SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;(相当于前面的复位命令)
 楼主| 759612761 发表于 2011-9-2 16:45 | 显示全部楼层
2# handlike

试过了,不知道怎么搞的,没有作用
李富贵 发表于 2011-9-3 02:06 | 显示全部楼层
#if defined ( __CC_ARM   ) /*------------------RealView Compiler -----------------*/
__asm void GenerateSystemReset(void)
{
MOV R0, #1           //;  
MSR FAULTMASK, R0    //; FAULTMASK 禁止一切中断产生
LDR R0, =0xE000ED0C  //;
LDR R1, =0x05FA0004  //;  
STR R1, [R0]         //;   
  
deadloop
    B deadloop        //;  
}
#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/
//#pragma diag_suppress=Pe940
void GenerateSystemReset(void)
{
  __ASM("MOV R0, #1");
  __ASM("MSR FAULTMASK, R0");
  SCB->AIRCR = 0x05FA0004;
  for(;;);
}
#endif
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

35

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部