关于stm32的软件复位

news2024/11/15 23:34:58

使用软件复位的目的:

软件复位并不会擦除存储器中的数据,它只是将处理器恢复到复位状态,即中断使能位被清除,系统寄存器被重置,但RAM和Flash存储器中的数据保持不变。

STM32软件复位(基于库文件V3.5) ,对于STM32来说软件复位有多种方式:    

1)采用官方自带的软件库  
    在官方软件库的 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);                   /* Keep priority group unchanged */ 
  __DSB();                                                                                       /* Ensure completion of memory access */               
  while(1);                                                                                        /* wait until reset */

 } 

 可是不是直接调用这个函数就OK了?    在Cortex-M3权威指南中有这么一句话:     
这里有一个要注意的问题:从SYSRESETREQ 被置为有效,到复位发生器运行复位命令,  往往会有一个延时。在此延时期间,处理器仍然能够响应中断请求。但我们的本意往往是要  让此次运行到此为止,不要再做不论什么其他事情了。所以,最好在发出复位请求前,先把  FAULTMASK 置位。  
  所以最好在将FAULTMASK 置位才万无一失。相同的官方 core_cm3.h 文件中也直接提供了该函数  

  static __INLINE void __set_FAULTMASK(uint32_t faultMask) 

{ 

register uint32_t __regFaultMask       __ASM("faultmask");   

__regFaultMask = (faultMask & 1);

 } 

 把上面这两个函数写在一起就能够实现软件复位了

void SoftReset(void) 

{ 
__set_FAULTMASK(1);      // 关闭全部中端 

NVIC_SystemReset();// 复位 

} 

参考

https://www.cnblogs.com/hrhguanli/p/3815374.htmlicon-default.png?t=N7T8https://www.cnblogs.com/hrhguanli/p/3815374.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1793640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Junit(Java单元测试)

配置文件 要想使用 Junit 进行单元测试需要引入以下第三方库&#xff1a; 引入后可以使用 Test&#xff0c;BeforeEach等注解 <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter<…

JVM之垃圾回收面试总结

文章目录 1.GC概述1.1 什么是垃圾1.2 为什么需要GC&#xff1f;1.3 早期垃圾回收1.4 Java垃圾回收机制1.5 评估GC的性能指标 2.垃圾回收相关算法2.1 垃圾标记阶段的算法2.1.1 引用计数算法(Java没有使用)2.1.2 可达性分析算法 2.2 垃圾清除阶段的算法2.2.1 标记-清除(Mark-Swee…

C语言 | Leetcode C语言题解之第128题最长连续序列

题目&#xff1a; 题解&#xff1a; typedef struct {int key;UT_hash_handle hh; }Hash; int longestConsecutive(int* nums, int numsSize) {Hash* headNULL;Hash* tempNULL;for(int i0;i<numsSize;i){int numnums[i];HASH_FIND_INT(head,&num,temp);if(!temp){temp…

Java编程常见问题汇总六

系列文章目录 文章目录 系列文章目录前言一、反射使用不当二、不必要的同步三、错误的选择List类型四、HashMap size陷阱五、对Hashtable, HashMap 和 HashSet了解不够 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

Ruoyi-Blog 基于若依后台的博客系统,长期维护

RuoYiBlog-一个基于若依的超级漂亮的博客系统 ✨项目介绍 一直想做一个博客平台&#xff0c;看过许多优秀的开源项目&#xff0c;但没有找到合适的。于是我利用业余时间把若依后台管理和pb-cms结合起来&#xff0c;在自己的参考中开发了一部分&#xff0c;就有了这个 项目可用…

【数学建模】MATLAB入门教程:插值与拟合(下)

前言 插值与拟合在数据处理和科学计算中扮演着非常重要的角色&#xff0c;它们用于估算未知数据点的值&#xff0c;帮助我们理解和预测数据趋势 一、一维插值 1、一维插值定义 已知n1个节点(,)(j0,1,...,n,其中互不相同&#xff0c;不妨设a<<...<b),求任一插值点(…

CSAPP Lab06——Shell Lab通关思路

远距离的欣赏 近距离的迷惘 谁说太阳会找到月亮 ——修炼爱情 完整代码见&#xff1a;CSAPP/shlab-handout at main SnowLegend-star/CSAPP (github.com) 上来就遇到了些小问题&#xff1a;①本来想看看“tshref”支持的命令&#xff0c;结果命令居然被拒绝执行了&#xff0c;…

现代密码学-认证协议

A.B两个用户想通过网络先建立安全的共享密钥再进行保密通信&#xff1f;A(B)如何确信自己正在和B(A)通信而不是C&#xff1f;这种通信方式为双向通信&#xff0c;此时的认证为相互认证。 相互认证 A/B两个用户在建立共享密钥时需要考虑的核心问题&#xff1a;保密性和实时性&…

刷代码随想录有感(93):贪心算法——无重叠区间(区间重叠问题:求区间重叠次数)

题干: 代码&#xff1a; class Solution { public:static bool cmp(vector<int>& a, vector<int>& b){return a[0] < b[0];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end(), c…

2024年湖北职称评审面试答辩技巧有哪些?看完你就懂了

2024年度湖北省部分工程专业水平能力测试面试答辩开始了&#xff0c;答辩时间是&#xff1a;2024年6月15、16日。 测试地点&#xff1a;武汉市武昌区洪山侧路63号茶港军转小区1号楼(武汉大学西门旁) 水平能力测试注意事项&#xff1a; &#xff08;一&#xff09;报名参加202…

企业级数据保护:华企盾DSC敏感内容识别与加密技术

在当今数字化时代&#xff0c;企业面临的数据安全挑战日益严峻。敏感数据的泄露不仅会导致经济损失&#xff0c;还可能损害企业的声誉和客户信任。因此&#xff0c;采用先进的敏感内容识别和加密技术&#xff0c;例如华企盾DSC敏感内容识别&#xff0c;对企业数据进行有效保护至…

Ubuntu server 24 (Linux) IPtables 双网卡 共享上网NAT 安装配置DHCP

一 开启路由转发功能 sudo vim /etc/sysctl.conf net.ipv4.ip_forward1 sudo sysctl -p 二 安装DHCP #更新软件包列表&#xff1a; sudo apt update #安装DHCP服务器 sudo apt install isc-dhcp-server #修改监听网卡,根据实际修改 sudo vi /etc/default/isc-dhcp-server …

【动手学深度学习】使用块的网络(VGG)的研究详情

目录 &#x1f30a;1. 研究目的 &#x1f30a;2. 研究准备 &#x1f30a;3. 研究内容 &#x1f30d;3.1 多层感知机模型选择、欠拟合和过拟合 &#x1f30d;3.2 练习 &#x1f30a;4. 研究体会 &#x1f30a;1. 研究目的 理解块的网络结构&#xff1b;比较块的网络与传统…

AI 入门指南二 :AI提示词(Prompt)

一&#xff0c;提示词的定义 提示词在中文中意为“触发”&#xff0c;在自然语言处理&#xff08;NLP&#xff09;的领域&#xff0c;它更接近于一个“心领神会”的概念&#xff0c;而非具有明确定义的术语。 简而言之&#xff0c;提示词是用户对大型语言模型的输入&#xff0…

Qt | Qt 资源简介(rcc、qmake)

1、资源系统是一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件(前面所讨论的数据都存储在外部设备中)。若应用程序始终需要一组特定的文件(比如图标),则非常有用。 2、资源系统基于 qmake,rcc(Qt 的资源编译器,用于把资源转换为 C++代码)和 QFile …

EE trade:通货膨胀对老百姓意味着什么

通货膨胀&#xff0c;是经济领域中的一个常见现象&#xff0c;对社会各阶层尤其是普通老百姓的生活产生了深远影响。理解通货膨胀对老百姓的真实含义&#xff0c;可以帮助我们更好地应对日常生活的变化与挑战。 1. 生活成本的上升 最直接的影响体现在生活成本上。通货膨胀会导致…

音频pop音的数学与物理解释

音频数据跳变太大的时候通常会有pop音&#xff0c;此时频谱上看pop音位置能量较高 音频中的“pop”音通常是由于信号的不连续性或瞬态变化造成的。这种不连续性的数学和物理原因可以从以下几个方面解释&#xff1a; 数学解释 信号不连续性 当音频信号发生突变时&#xff0c;…

Android完整备份:备份Android手机数据的4种最佳方法

如今&#xff0c;人们每天都依赖手机&#xff0c;丢失数据对我们所有人来说都是一个大麻烦。由于生活是不可预测的&#xff0c;没有人知道什么时候他的数据可能会被意外删除或丢失。因此&#xff0c;仔细备份手机数据非常重要。大多数主要智能手机平台都具有将数据备份到计算机…

C/C++学习路线

学习分享 C语言学习路线 视频&#xff1a;浙大翁恺C语言程序设计&#xff0c;当时学习C语言的时候感觉老师讲的很有意思&#xff0c;现在依然很受学生欢迎&#xff0c;播放量也很高&#xff0c;C语言主要需要学习数组&#xff0c;指针&#xff0c;结构体和函数等&#xff0c;…

爆肝三天,制作属于自己的地图——DAY1(地图数据整理)

爆肝第一天&#xff0c;地图数据整理 作者&#xff1a;御剑飞行 引言 本系列我将用三篇文章详细的讲述开源地图数据集、Mapmost Studio介绍、如何通过Mapmost Studio转为生成地图数据。 以下是常用的地图数据集。 Esri 开放数据中心 Esri开放数据中心包含来自全球5,000 多…