STM32中NVIC_SystemReset()函数的作用?什么时候用?

STM32软件复位有两种方式

(1)方式一:NVIC_SystemReset()函数用来复位STM32.
注意1:从SYSRESETREQ 被置为有效,到复位发生器执行复位命令,往往会有一个延时。在此延时期间,处理器仍然可以响应中断请求。但我们的本意往往是要让此次执行到此为止,不要再做任何其它事情了。所以,最好在发出复位请求前,先把FAULTMASK置位。需要加上这句:__set_FAULTMASK(1);意思是关闭所有中断的意思,目的是在执行NVIC_SystemReset()复位函数过程中不被中断所打断。两个函数执行后系统复位重新执行代码,包括之前所配置好的外设寄存器也都回到复位状态。如下:

__set_FAULTMASK(1);//关闭所有中断
NVIC_SystemReset();//复位函数

注意2:上面两个函数在core_cm3.h里面都有定义如下:

static __INLINE void NVIC_SystemReset(void)
{SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | SCB_AIRCR_SYSRESETREQ_Msk);                  __DSB();                                                                  while(1);
}
另外一些NVIC函数在misc.h中。

(2)方式二:1、通过置位NVIC中应用程序中断与复位控制寄存器(AIRCR)的VECTRESET位:
LDR R0, =0xE000ED0C ; NVIC AIRCR address
LDR R1, =0x05FA0001 ; 置位 VECTRESET位,前面的0x05FA是访问钥匙
STR R1, [R0] ; 触发复位序列
deadloop
B deadloop ; 该死循环保证后面的指令不可能被执行到
这种复位的作用范围覆盖了整个CM3 处理器中,除了调试逻辑之外的所有角落,但是它不会影响到CM3 处理器外部的任何电路,所以单片机上的各片上外设和其它电路都不受影响。

STM32中NVIC_SystemReset()函数的作用?什么时候用?相关推荐

  1. SOCKET编程中,select()函数的作用

    SOCKET编程中,select()函数的作用Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect.accep ...

  2. 计算机语言中str是什么意思,python中str函数的作用是什么

    python中str函数的作用是什么 发布时间:2021-04-27 16:12:24 来源:亿速云 阅读:56 作者:Leah python中str函数的作用是什么?相信很多没有经验的人对此束手无策 ...

  3. Linux中popen函数的作用小结

    概述 popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程.这篇文章重点给大家介绍Linux中popen函数的作用,感兴趣的朋友一起看看吧 p ...

  4. python中locals函数_python中locals函数的作用是什么?

    在python中,每个模块拥有它自已的名字空间,即全局名字空间.它记录了模块的变量,包括函数.类.其它导入的模块.模块级的变量和常量,方便python的使用.python中字典的使用也是很常见的,使用 ...

  5. matlab中imadjust,matlab中imadjust函数的作用及应用举例

    imadjust简介 imadjust是一个计算机函数,该函数用于调节灰度图像的亮度或彩色图像的颜色矩阵.在matlab的命令窗口中键入: doc imadjust或者help imadjust即可获 ...

  6. python中匿名函数的作用_Python 中的匿名函数,你会用吗

    原标题:Python 中的匿名函数,你会用吗 概念 我们从一个例子引入. 这里有一个元素为非空字符串的列表,按字符串最后一个字母将列表进行排序.如果原列表是 ['abc', 'g', 'def'],则 ...

  7. python中匿名函数的作用_什么是Python中的匿名函数

    匿名函数 lambda x , y : x+y 1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的. 2.匿名函数的参数规则.作用域关系与有名函数是一样的. 3.匿名函数的函数体通常应该 ...

  8. 在php中array函数的作用是什么意思,php中的array函数有什么用

    php中的array函数的作用:array()函数用于创建数组.例如我们要创建一个索引数组,语法为[array(value1,value2,value3].如果要创建一个空数组,代码为[$new = ...

  9. vue中render函数的作用及解析

    在vue脚手架的main.js文件中,存在这样一段代码: 意思是对vue实例的配置,其中render函数的作用是,将h创建的Node节点信息return返回给Vue.js底层处理文件中的beforeM ...

最新文章

  1. linux ubuntu QT 下载和安装(Qt Creator)
  2. Java中恒等条件判断:“equals”和“==”
  3. CentOS7使用ISO镜像文件作为离线Yum源
  4. 强烈推荐!孩子的科普从这套全球畅销250万册的最酷科学书起步
  5. 《javaScript100例|01》超级经典一套鼠标控制左右滚动图片带自动翻滚
  6. springboot2源码3-自动配置
  7. Windows2003开机后进不了系统
  8. delphi7 获取计算机名,远程控制篇:获得网络邻居所有机器名_delphi教程
  9. 记录点滴,善于分享-Microsoft Visio 2016下载与安装教程(全)
  10. border:0和boder:none区别
  11. 2020-03-19
  12. chipping rate码片速率
  13. 手写代码详解Android Hook入门demo,android应用案例开发大全第四版源码
  14. 华为交换机常用命令大全
  15. python爬取微博数据存入数据库_python爬取微博并且存入数据库
  16. 解封了 开始寻找牛人
  17. 第五周 正则中的空白字符
  18. 【酷热高温教你给显卡降降温】
  19. 新浪博客发表博文不同步到新浪微博
  20. Bootstrap书籍分类

热门文章

  1. 前端的百度地图的api的使用
  2. Python '\r', '\n', '\r\n' 的彻底理解
  3. Sass在编译中文注释中报错
  4. 关于Combobox的多选和单选情况
  5. 大型网站技术架构:核心原理与案例分析阅读笔记二
  6. 教你如何更改xshell中的转发规则
  7. Django路由与视图
  8. Spring Cloud 使用 FeignClient 启动报错
  9. LongAdder解析 1
  10. IAR实际使用过程中遇到的问题