STM32软件复位(基于库文件V3.5)

发布者:科技狂人最新更新时间:2016-06-30 来源: eefocus关键字:STM32  软件复位  库文件V3.5 手机看文章 扫描二维码
随时随地手机看文章
STM32软件复位(基于库文件V3.5)
 
void SoftReset(void)
{
__set_FAULTMASK(1);      // 关闭所有中端
NVIC_SystemReset();// 复位
}

  在官方软件库的 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);
}
关键字:STM32  软件复位  库文件V3.5 引用地址:STM32软件复位(基于库文件V3.5)

上一篇:STM32串口多机通信
下一篇:空操作NOP指令在ARM和C51的区别

推荐阅读最新更新时间:2024-03-16 14:59

STM32 串口固件库中定义的几个中断标志什么意思?
#define USART_IT_PE ((uint16_t)0x0028) #define USART_IT_TXE ((uint16_t)0x0727) #define USART_IT_TC ((uint16_t)0x0626) #define USART_IT_RXNE ((uint16_t)0x0525) #define USART_IT_IDLE ((uint16_t)0x0424) #define USART_IT_LBD ((uint16_t)0x0846) #define USART_IT_
[单片机]
STM32意外复位问题调试
最近在使用STM32座项目时遇到一个奇怪的问题。系统一开始运行很正常但是在长时间运行之后会随机的出现STM2单片机无故产生复位的问题。因为在调试的过程中收获颇多,所以打算记录一下这一次的调试过程。 首先做问题分析,既然单片机在运行一段时间之后会产生复位。那具体是什么原因引起的单片机复位呢?拍脑子一想会不会是没有及时喂狗导致看门狗溢出引起的复位。为了证明这一点我们查询了stm32的数据手册有关于复位源的介绍 由上面的描述我们可以知道在RCC_CSR中记录了单片机复位的类型。因此我们只要在单片机启动时去读取该寄存器中的对应状态位即可判断出单片机上一次是因为何种原因产生复位的。注意:RCC_CSR寄存器是需要软件清除的。如
[单片机]
<font color='red'>STM32</font>意外<font color='red'>复位</font>问题调试
STM32低功耗进行总结
STM32F103R8和RC的停机模式的休眠电流还不一样,R8停机模式实测为11UA,RC停机模式实测为30uA,还以为又是我的程序哪里没做好呢,仔细看了PDF,这两个芯片PDF上标的值的确有区别,和我测的值差不多,那我就没有再深究的意义了! 结合下文的高手经验,反复摸索, standby模式1.9uA,PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); stop模式:11uA, PWR_EnterSTANDBYMode(); 实验证明,将IO端口设成IPU/IPD/AIN/PPOUT=1/PPOUT=0/ODOUT=0
[单片机]
STM32学习之路(五)——RTC系统时钟
在STM32的CPU有一个RTC引脚,用于连接电池。当系统掉电后,自动由电池给RTC供电,完成时间计数。 对RTC的访问是通过APB1接口进行的。APB1刚被开启的时候,从APB1读来的RTC寄存器的第一个值可能是被破坏了的。因此在程序中,先等待RTC_CRL寄存器中的RSF位被硬件置1,然后才开始读操作。对于写操作,在每一次写操作必须保证前一次写操作完成,即通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新状态中。只有当RTOFF状态位是1,才可以写RTC寄存器。 RTC模块的寄存器实际上只有5个:控制寄存器RTC_CR,预分频装在寄存器RTC_PRL,预分频余数寄存器RTC
[单片机]
基于STM32的LED点阵屏的设计与实现
简介:近年来,随着信息产业的高速发展,点阵LED 显示屏已广泛应用于金融行业、邮电行业、体育馆、广告业等各种广告发布和信息显示系统,成为信息传送的重要手段。本文介绍的LED 书写点阵屏,不但可以像普通显示屏一样作为信息输出设备,而且可以通过光笔直接在LED 显示屏上进行信息输入,普通的显示屏也具有 手写 的功能了。 1 硬件系统设计 本系统总体框图如图1 所示,由键盘与显示模块、光笔模块、LED 点阵屏模块、STM32控制模块、电源模块五部分组成。 图1 总体方案方框图 1. 1 核心控制模块 本系统以STM32F103VCT6 为控制核心。 STM32是32 位微处理器,具有低功耗,中断延迟小,高性能等特
[单片机]
基于<font color='red'>STM32</font>的LED点阵屏的设计与实现
stm32专题三十二:stm32功耗模式
stm32功耗模式 按功耗由高到低排列,STM32 具有运行、睡眠、停止和待机四种工作模式。上电复位后 STM32处于运行状态时,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式降低功耗,这三种模式中,电源消耗不同、唤醒时间不同、唤醒源不同,用户需要根据应用需求,选择最佳的低功耗模式。三种低功耗的模式说明见下表。 睡眠模式下,任何中断都可以唤醒内核,外部 / 内部高速时钟保持打开,调压器保持打开,因此,内核只要被唤醒,就能马上正常的执行程序(优点:响应速度快;缺点:功耗比较大); 停止模式下,HSE和HSI被关闭,调压器可选开启或低功耗模式(若选为低功耗模式,则还需要加上调压器从低功耗切换至正常模
[单片机]
<font color='red'>stm32</font>专题三十二:<font color='red'>stm32</font>功耗模式
STM32学习之:Context—M3简介
Cortex-M3概览 (1)简介 Cortex-M3是一个 32位处理器内核。内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。 比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的 cache。另外在CM3中,Both小端模式和
[单片机]
STM32/CPU地址映射的概念
1总线的由来 很多人对总线和地址映射的概念都是一头雾水,但是我们如果知道为何需要总线和地址映射,他们是在什么背景下被衍化出来的,自然而然对此概念就清清楚楚了。 我们知道CPU都是通过总线访问外设,例如STM32使用AMBA规范的总线和外设进行交互,那么在总线的概念没有被提出来的时候,外设是怎样被访问的呢? 其实在最早期还没有总线概念的时候,CPU设计者会直接把CPU内核和各种接口控制器设计到一起,如果要访问一个硬件,直接在内核里面对各种接口控制器进行操作,从而操作相应的硬件。我们看下图。 后来设计者发现如果每添加一个外设都要修改CPU内核,这样不具有很好的扩展性,为了使得外设的改变(增加、删除、修改)不影响CPU内核架
[单片机]
<font color='red'>STM32</font>/CPU地址映射的概念
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved