记录下软件复位两个函数
__set_FAULTMASK(1);
NVIC_SystemReset();
我的STM32是F103系列,即CPU内核为Cortex M3,这两个函数在core_cm3.h里面都有定义,
__set_FAULTMASK(1);是关闭所有中断的意思,目的是在执行NVIC_SystemReset();复位函数过程中不被中断所打断。
两个函数执行后系统复位重新执行代码,包括之前所配置好的外设寄存器也都回到复位状态。
如果你想要保持之前配置好的寄存器不变的话,那么你再程序跳转之前要先初始化堆栈,而且你程序跳转的地址不对,应该这样:
__set_MSP((__IO uint32_t) 0x08000000); 要先初始化堆栈指针
((void () (void)) ((vu32 )0x08000004) (); 这句才是程序跳转,注意了,是((vu32 *)0x08000004
关键字:STM 软件复位 函数
引用地址:
STM软件复位
推荐阅读最新更新时间:2024-11-13 14:28
STM32 HAL库学习系列第5篇 定时器TIM---编码器接口模式配置
cube基本配置,外设开启编码器,串口2 -------------------------------------------------------------------------------------------------------------------------- 错误:error: #20: identifier TIM_ICPOLARITY_BOTHEDGE is undefined 意思是,高级、通用定时器不能用BothEdge,只有基本定时器才能用BothEdge F4系列 /* 编码器初始化及使能编码器模式 */ ENCODER_TIMx_Init(); HA
[单片机]
STM32学习笔记:【008】IIC通信协议详解
什么是IIC(I2C)? IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司设计出来的一种简单、双向、二线制、同步串行总线。它是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。 那么也就是说,只要收发双方同时接入SDA(双向数据线)、SCL(同步时钟线)便可以进行通信。 I2C总线的工作速度分为 3 种模式(实际上,IIC的通信速率由SCL决定): S(标准模式),测量与控制场合; F(快速模式),速率为 400kb/s;(默认) Hs(高速模
[单片机]
STM3的TIM4定时器功能设置
一、初始化过程 /*********************************************************************** 利用TIM4定时器作为计时,每个0.1秒处理一次数据 计算周期的公式为: psc/72*period/1000000 (单位为秒) ************************************************************************/ void TIM2_Config(void) { TIM_TimeBaseInitTypeDef TIM_timeBaseStucture; TIM_OCInitTypeDef T
[单片机]
STM32F10x_RTC秒中断
Ⅰ、概述 RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理,选择RTC时钟源,再进行分频,到达计数的目的。 该文主要讲述关于RTC的秒中断功能,这个功能类似SysTick系统滴答的功能。RTC秒中断功能其实是每计数一次就中断一次。注意,这里所说的秒中断并非一定是一秒的时间,它是由RTC时钟源和分频值决定的“秒”的时间,当然也是可以做到1秒钟中断一次。 本文章提供的实例工程,其实验效果是: 主函数间隔0.5秒LED变化一次; 秒中断一次打印数据 RTC Sec... ; 也就是LED变化一次,串口打印一次数据 RTC Sec... 扩展部分的功能RTC计数:可以实
[单片机]
STM32CubeMX学习笔记——STM32H743通用定时器
功能简述 主模式TIM2的中断作为从模式TIM3的时钟输入 (级联定时器) 红灯亮6灭5 频率1hz 绿灯亮3灭3 频率0.5hz STM32CubeMX配置 STM32CubeMX版本:4.27.0 配置流程: Pinout界面选择并开启需要的LED控制引脚 Clock Configuration配置时钟树 Configuration界面配置System 生成工程 Pinout配置 LED输出PIN配置,TIM2,TIM3的基本配置 Clock Configuration配置 开启系统时钟,设置TIM2、TIM3时钟(APB1) Configuration 左侧主要系统功能的开启,或中间软件层功能的开
[单片机]
嵌入式-stm32学习:按键检测
bsp_key.h #ifndef __KEY_H #define __KEY_H #include stm32f4xx.h //引脚定义 /*******************************************************/ #define KEY1_PIN GPIO_Pin_0 //GPIO引脚号 #define KEY1_GPIO_PORT GPIOA //GPIO端口A #define KEY1_GPIO_CLK RCC_AHB1Periph_GPIOA //GPIO端口时钟 #define KEY2_
[单片机]
STM32CubeMX代码生成和点亮LED
所需工具STM32CubeMX和Keil5 1、先打开STM32CubeMX软件,点击New Project新建工程; 2.在搜索框中搜索你的项目芯片; 3、搜索出来有两个不同封装的芯片,写程序没区别,但是这个软件可以生成IO说明文档,可能会导致文档与实际封装差异。选择确定后双击~; 4、创建完工程,简单介绍一下功能; 5、先配置时钟树,我使用的F429最大支持180M时钟,我配置为最大时钟。 6、我的板子LED是接在PA11上的,在搜索栏上搜索PA11,芯片PA11会一闪一闪的。 7、点击PA11引脚,会出现下面画面,我们选择GPIO_Output 8、当PA11选择作为输出时,外设USB功
[单片机]
STM32低功耗模式简介
STM32F10xxx有三中低功耗模式: ●睡眠模式(Cortex?-M3内核停止,外设仍在运行) ●停止模式(所有的时钟都以停止) ●待机模式(1.8V电源关闭) 时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。 上电,默认使用内部HSI时钟8M,经测试10mA左右。待机模式可实现系统的最低功耗。 可将电流消耗降至两微安。 在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚: ●复位引脚(始终有效) ●当被设置为防侵入或校准输出时的TAMPER引脚 ●被使能的唤醒引脚 /*按钮GPIOB9进入睡眠,WKUP pin(GPIOA0)唤
[单片机]