1.关于待机模式与断电模式的区别:
下图参考手册P37电源控制章节:
stm32关于待机模式下,该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、 HSI和HSE振荡器也被断电。 SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。也就是说,待机模式下 ,STM32的除了备份区以外,待机电路中的比如唤醒电路和看门狗仍然是工作的,而普通IO口由于PLL、HSI、HSE的断电均高阻态无法工作。比如我们设置了WKUP唤醒,那么即使待机模式下,PA0仍具有检测上升沿实现唤醒功能(注意,待机状态下这种唤醒并不是外部中断,中断控制器都停止工作了!)
而断电模式则是只有后备区域供电,这与待机模式还是有区别的!!stm32的待机模式就相当于我们的手机处于关机状态,因此这个待机和我们手机平时说开机时的“待机”还是有差别的。
2.我们可以通过待机通过WKUP唤醒实现类似手机按开机关机键的操作
如何进入待机模式:手册写的详细调用库函数PWR_EnterSTANDBYMode()即可 ,注意PWR_CR寄存器待机模式下也会清空,不属于后备区,因此上电后如果想使能WKUP唤醒需重新再写一次。
void Sys_Standby(void)
{
//注意操作PWR电源寄存器先使能PWR时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外设时钟
PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能
PWR_EnterSTANDBYMode(); //进入待命(STANDBY)模式
}
3.关于原子唤醒实验主要就是要理解这个的外部中断与待机唤醒不是同一回事,外部中断PA0是在正常模式下才起作用的,而待机唤醒是待机模式下,此时中断已经停止工作了,而唤醒是另一种方式而已!
手册这么说的:当一个外部复位(NRST引脚)、IWDG复位、WKUP引脚上的上升沿(注意不是中断)或RTC闹钟事件发生时,微控制器从待机模式退出。从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。
4.关于原子程序的解释:
如3所说WAKE_UP其实只是在待机模式下只需检测一个上升沿即可,也就是说其实待机模式下只要按下WAKE_UP实际上就已经唤醒了,为何3秒后才亮是因为在执行初始化中的函数Check_WKUP()又等待了三秒,而正常模式下却是在中断中等待了3秒。比如讲初始化下面这句注释掉,你就会看到上电唤醒只要一个上升沿!(这样好处也就给我们感觉开关机时间是一样的)
也就是这个实验注意1、在待机状态下,按下按键,程序执行是从初始化开始的。2、在开机状态下,按下按键是从中断执行的(检测到上升沿)
扩展:手机关机定时启动这种就类似32的闹钟唤醒
关键字:STM32 待机唤醒
引用地址:
STM32待机唤醒操作
推荐阅读最新更新时间:2024-03-16 15:41
STM32外部中断(EXTI)分析和应用
学过51单片机的外部中断的话入门会很快; 本篇博文基于STM32F103ZET6芯片,与大多数STM32F10x芯片兼容; 代码基于ST官网提供的3.5.0标准库 如有不足之处,还望前辈多多指教; 一些需要了解的基础知识 1. STM32每个GPIO口都可以作为外部中断输入口使用 2. 每个中断都设有状态位 3. 每个中断/事件都有独立的触发和屏蔽设置。 4. STM32103有19个外部中断(但是供GPIO口使用的中断只有16个) 分别是: 0~15:对应外部中断IO的输入中断 16 : 连接到PVD输出 17 :连接到RTC闹钟时间 18 :连接到USB唤醒事件 这里会容易出现一个问题说:STM32F103ZET6的GPIO管
[单片机]
stm32_ps2键盘显示测试程序
view plain copy //PS2键盘测试程序,可换行,按shift不放接着输入 //可输出大写,按下CAPS输出大写,再次按下输出小写 //此程序只用来测试,代码冗余,仅供参考,可根据需要自行删减 //PA13- PS2.CLK PA15- PS2.DATA #include stm32f10x_lib.h #include sys.h #include usart.h #include delay.h #include led.h #include key.h #include exti.h #include wdg.h #include
[单片机]
STM32学习笔记:【003】GPIO
在STM32中,最常用到的功能莫过于GPIO(General Purpose Input Output 、通用输入/输出)了,在STM32中,除了除去ADC以外的复用功能,剩下的几乎就是GPIO了。 下面给出GPIO的基本使用步骤: 初始化 1.声明一个GPIO属性结构体,设置各成员属性 这个结构体的属性是这样的: typedef struct { uint32_t Pin; /*指定的引脚号,右值表达式可以是GPIO_PIN_0到~GPIO_PIN_15任意相或 */ uint32_t Mode; /* 模式 GPIO_MODE_INPUT 输入模式
[单片机]
关于STM32开发板晶振相关的问题汇总
1、自己做了个STM32的板子,但是手里没有8M的晶振,所以就用了,12M的,但是不正常,上电之后PA15和PA14接的是两个led,PA15接的led常亮,PA14接的的led不亮,而且芯片下载程序又能下载,应该不是芯片坏的问题吧,而且不管我些什么程序进去,两个脚的状态都不变,我怀疑是电路有问题,可是我仔细检查了电路和板子,都没问题,JTAG正常使用。我用的是12M的晶振,这会有影响吗?感觉不管下什么程序进去感觉芯片好像没有运行。 答:如果使用12M的晶振,那么要修改启动文档中的关于RCC的语句。因为如果你使用库文件的话,ST的库,默认外部晶振是8M,所以如果你不修改RCC部分的语句,会造成CPU不启动,或者启动不成功。
[单片机]
解决STM32 HardFault_Handler错误记录
HardFault_Handler错误的原因最最多的原因是数组越界以及指针指飞,其实这两个是差不多的,都是访问了不该访问的地方导致了错误,就像一个路痴,漫无目的的走到了一个陌生的地方……然后就迷路了……然后就木有然后了……(貌似是第一次写原创,我该如何装成经常写的样子……) 以前查找这种错误时比较盲目,就是在程序中缕着流程一步步的查找,逐个屏蔽进行排除,在程序隔一段加个while(1),以及通过串口发出错误状态日志等……这些方法都效率低下,不易查找。相比之下,查看堆栈的方法更加实用,效率也高。 在HardFault_Handler中的while(1)设置断点,然后运行,给它触发HardFault_Handler的条件,然后
[单片机]
意法半导体的STM32 Power Shield针对功耗敏感的嵌入式应用开发
电子网消息,意法半导体的STM32 Power Shield电路板让开发人员能够精确地查看嵌入式设计的功耗情况,硬件采用 EEMBC™ 指定的与新的IoTConnect和 ULPMark™ (Energy Monitor V2.0)基准框架参考平台相同的硬件。 STM32 Power Shield板 (X-NUCLEO-LPM01A)兼容 STM32 Nucleo开发板,能够动态监测各种工况下的电流值。内置显示屏可直接显示电流值,无需使用万能表即可查看读数。当配合EEMBC IoTConnect和/或 ULPMark时,STM32 Power Shield将提供一个内容更多的图形用户界面,直接显示基准测量结果和能耗情况
[半导体设计/制造]
以STM32为主控的温度单反馈控制系统全面解析
设计选用STM32单片机作控制器,设计温度单反馈的控制系统,对电加热水器内水的温度进行控制。通过PT100温度传感器实现对水温信号的采集,并利用模拟量前向通道来对水温信号进行处理。利用STM32单片机进行控制输出PWM信号,用此信号控制接触器进而控制电加热水器的电源通断,最终实现对水温的控制。同时用组态软件设计监控界面来实现对水温的控制显示。通过对此课题的设计,能够使自动化的学生对工业过程控制对象具有更进一步的了解,同时熟练掌握自动化控制系统的设计流程,为以后的工作学习打下坚实基础。 一、控制系统硬件设计 1、控制系统硬件总体设计 温度是一个很重要的变量,需要对其进行准确地控制。温度控制系统常用来保持温度恒定或者使温度按照某种
[单片机]
一文了解STM32启动过程
1 概述 说明 每一款芯片的启动文件都值得去研究,因为它可是你的程序跑的最初一段路,不可以不知道。通过了解启动文件,我们可以体会到处理器的架构、指令集、中断向量安排等内容,是非常值得玩味的。 STM32作为一款高端 Cortex-M3系列单片机,有必要了解它的启动文件。打好基础,为以后优化程序,写出高质量的代码最准备。 本文以一个实际测试代码--START_TEST为例进行阐述。 整体过程 STM32整个启动过程是指从上电开始,一直到运行到 main函数之间的这段过程,步骤为(以使用微库为例): ①上电后硬件设置SP、PC ②设置系统时钟 ③软件设置SP ④加载.data、.
[单片机]