• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32如何实现软件复位?

捷波 2018-09-27 浏览量:2195
STM32如何实现软件复位?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 采用官方自带的软件库
    void NVIC_GenerateSystemReset(void)
    {
      SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;
    }

    在Cortex-M3权威指南中有说明
    __SETFAULTMASK();
    所以要系统复位 只要 调用这两个函数就OK了
    NVIC_SETFAULTMASK();
    GenerateSystemReset();

    自己编写相应汇编代码
    __asm void SystemReset(void)
    {
     MOV R0 #1           //;
     MSR FAULTMASK R0    //; 清除FAULTMASK 禁止一切中断产生
     LDR R0 =0xE000ED0C  //;
     LDR R1 =0x05FA0004  //;
     STR R1 [R0]         //; 系统软件复位   
     
    deadloop
        B deadloop        //; 死循环使程序运行不到下面的代码
    }

    参考:https://blog.csdn.net/huangtonggao/article/details/6446208
    • 发布于 2018-10-24
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:18
  • 可以参考https://blog.csdn.net/huangtonggao/article/details/6446208
    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 1
    • 0

  • 是软件硬复位吗 可以使用另一片单片机接收stm32的复位信号 或者

    用自身io控制复位端 但是电路要用阻容隔离一下

    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 官方库

    NVIC_SETFAULTMASK(); 

    GenerateSystemReset();

    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 在需要软件复位的地方添加如下两句代码:
    __set_FAULTMASK(1);
    NVIC_SystemReset();
    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 都是通过嵌入汇编程序进行复位的,上面的函数也是调用的汇编
    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 32实现软件复位唯一方式是通过看门狗,其实硬件复位不是更简单么,按个按键就可以了。

    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 软件复位也就看门狗了,只有我在程序代码死机的时候,复位才有意义
    • 发布于2018-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 软件复位都是用看门狗来复位,把你的看门狗喂狗停止就会复位
    • 发布于2018-09-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 在库里面有个专门的API可以用于让单片机复位

    HAL_NVIC_SystemReset​();

    • 发布于2018-10-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 复位方式1.看门狗复位  2.在需要复位的地方加上__set_FAULTMASK(1);
    NVIC_SystemReset();
    • 发布于2018-10-11
    • 举报
    • 评论 0
    • 0
    • 0

  • stm32有对应一个看门狗复位函数,你可以用看门狗来产生复位
    • 发布于2018-10-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果使用的是库函数,里面能找到复位的函数的,在你的库函数里面查找一下
    • 发布于2018-10-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果使用HAL库,可以用库函数HAL_NVIC_SystemReset()
    • 发布于2018-10-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接用你的标准库或者HAL库里面的复位函数就可以产生复位
    • 发布于2018-10-24
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32如何实现软件复位?