PWR 里standby MODE 和 RTC关系
来源:互联网 发布:淘宝刷手机单假聊流程 编辑:程序博客网 时间:2024/05/18 00:56
刚接触PWR的内容,使用手册说的不太能让我好理解。其实当你弄懂了以后再回去看使用手册还是能找到的,只是写的过于简略,对于初学者很多地方理解不到位。
这个小总结完全从初学者角度,目的只有一个:进入/唤醒 PWR的standby模式。其实更多的是如何配置进入,唤醒基本上是配置好了后自动完成或硬件出发的,我们需要做的退出后的设计。这块内容暂不作为本次讨论内容。
一 低功耗模式简介
NVIC 和 PWR 各寄存器状态决定三种低功耗模式:
低功耗模式一览表
PS: STM32F的NRST是异步复位脚。
当NRST输入低电平的时候,MCU处于复位状态,重设所有的内部寄存器,及片内几十KB的SRAM。
当NRST从低电平变高时,PC指针从0地址开始。
但是复位的时候不会将STM32F片内RTC的寄存器以及后备存储器重置,因为它们是用电池通过专门的VBAT脚供电。
STM32中的NRST有施密特功能。大概在输入电压低于1.9V的时候将芯片复位。
这里重点说standby模式
二 设置stm32 进入standby模式需要
1 PWR配置
a-- RCC配置时候开启 PWR、BKP时钟
/* Enable PWR and BKP clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
b-- 允许 PWR唤醒
/* Enable WKUP pin */
PWR_WakeUpPinCmd(ENABLE);
c-- 允许 进入备份域 (为什么需要这样,下文详解)
/* Allow access to BKP Domain */
PWR_BackupAccessCmd(ENABLE);
2 进入中断
PWR_EnterSTANDBYMode();
这一句话完成了表7里 standby MODE "操作" 的内容
void PWR_EnterSTANDBYMode(void)
{
/* Clear Wake-up flag */
PWR->CR |= CR_CWUF_Set;
/* Select STANDBY mode */ ----PDDS位
PWR->CR |= CR_PDDS_Set;
/* Set SLEEPDEEP bit of Cortex System Control Register */ ----sleepdeep位
*(vu32 *) SCB_SysCtrl |= SysCtrl_SLEEPDEEP_Set;
/* Request Wait For Interrupt */
__WFI(); ----wfi
}
三 从standby 模式唤醒
表7、表11中都可知从standby 模式中唤醒的方式有四种
RTC闹钟
WKUP引脚上升沿
NRST上引脚外部复位
IWDG 复位
下图解释了我最初的不明白---RTC 和standby什么联系
- PWR 里standby MODE 和 RTC关系
- ActiveSync失败和RTC的关系
- STM32 低功耗模式STOP、STANDBY配合RTC应用实例
- led pwr
- java里equals和hashCode的关系
- ActiveSync和RTC
- 定时器、看门狗和RTC
- Development Mode 和 Production Mode
- Quirks mode和strict mode
- command mode 和 video mode
- command mode 和 video mode
- STANDBY
- 嵌入式学习--work4 电源控制器(PWR)/复位和时钟控制(RCC)
- RTC
- RTC
- RTC
- RTC
- RTC
- mysql 5.6.20 配置数据库编码格式
- SQL入门(5)——表的设计、主键、外键
- Codeforces 465A inc ARG(水题)
- 内存分配:malloc,calloc,realloc,free
- 学习笔记:default, delete关键字
- PWR 里standby MODE 和 RTC关系
- 《CSS权威指南》笔记-样式
- Ubuntu、Win7双系统修改Grub引导顺序
- 双向链表的简单实现
- 凹多边形画法
- 【HDU】4984 Goffi and Graph 最大生成树
- uva 488
- 数据结构算法总结
- Codeforces 465B Inbox (100500)(水题)