STM32中NVIC_SystemReset()函数的作用?什么时候用?
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()函数的作用?什么时候用?相关推荐
- SOCKET编程中,select()函数的作用
SOCKET编程中,select()函数的作用Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect.accep ...
- 计算机语言中str是什么意思,python中str函数的作用是什么
python中str函数的作用是什么 发布时间:2021-04-27 16:12:24 来源:亿速云 阅读:56 作者:Leah python中str函数的作用是什么?相信很多没有经验的人对此束手无策 ...
- Linux中popen函数的作用小结
概述 popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程.这篇文章重点给大家介绍Linux中popen函数的作用,感兴趣的朋友一起看看吧 p ...
- python中locals函数_python中locals函数的作用是什么?
在python中,每个模块拥有它自已的名字空间,即全局名字空间.它记录了模块的变量,包括函数.类.其它导入的模块.模块级的变量和常量,方便python的使用.python中字典的使用也是很常见的,使用 ...
- matlab中imadjust,matlab中imadjust函数的作用及应用举例
imadjust简介 imadjust是一个计算机函数,该函数用于调节灰度图像的亮度或彩色图像的颜色矩阵.在matlab的命令窗口中键入: doc imadjust或者help imadjust即可获 ...
- python中匿名函数的作用_Python 中的匿名函数,你会用吗
原标题:Python 中的匿名函数,你会用吗 概念 我们从一个例子引入. 这里有一个元素为非空字符串的列表,按字符串最后一个字母将列表进行排序.如果原列表是 ['abc', 'g', 'def'],则 ...
- python中匿名函数的作用_什么是Python中的匿名函数
匿名函数 lambda x , y : x+y 1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的. 2.匿名函数的参数规则.作用域关系与有名函数是一样的. 3.匿名函数的函数体通常应该 ...
- 在php中array函数的作用是什么意思,php中的array函数有什么用
php中的array函数的作用:array()函数用于创建数组.例如我们要创建一个索引数组,语法为[array(value1,value2,value3].如果要创建一个空数组,代码为[$new = ...
- vue中render函数的作用及解析
在vue脚手架的main.js文件中,存在这样一段代码: 意思是对vue实例的配置,其中render函数的作用是,将h创建的Node节点信息return返回给Vue.js底层处理文件中的beforeM ...
最新文章
- linux ubuntu QT 下载和安装(Qt Creator)
- Java中恒等条件判断:“equals”和“==”
- CentOS7使用ISO镜像文件作为离线Yum源
- 强烈推荐!孩子的科普从这套全球畅销250万册的最酷科学书起步
- 《javaScript100例|01》超级经典一套鼠标控制左右滚动图片带自动翻滚
- springboot2源码3-自动配置
- Windows2003开机后进不了系统
- delphi7 获取计算机名,远程控制篇:获得网络邻居所有机器名_delphi教程
- 记录点滴,善于分享-Microsoft Visio 2016下载与安装教程(全)
- border:0和boder:none区别
- 2020-03-19
- chipping rate码片速率
- 手写代码详解Android Hook入门demo,android应用案例开发大全第四版源码
- 华为交换机常用命令大全
- python爬取微博数据存入数据库_python爬取微博并且存入数据库
- 解封了 开始寻找牛人
- 第五周 正则中的空白字符
- 【酷热高温教你给显卡降降温】
- 新浪博客发表博文不同步到新浪微博
- Bootstrap书籍分类