打印

stm32软件复位的问题

[复制链接]
3178|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

粉丝