RTC_WakeUp唤醒STM32F4停止模式(借鉴的是原子哥写的代码):
首先我们先初始化RTC配置:

//RTC初始化
u8 MyRTC_Init(void)
{RTC_InitTypeDef RTC_InitStructrue;u16 retry=0x1FFF;RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR时钟PWR_BackupAccessCmd(ENABLE);//使能后备寄存器if(RTC_ReadBackupRegister(RTC_BKP_DR0)!=0x5050){RCC_LSEConfig(RCC_LSE_ON);//开启低速外部时钟if(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET)//读取外部低速时钟是否准备就绪{retry++;delay_ms(10);}if(retry==0)return 1;//LSE开启失败RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//选择LSE作为RTC时钟RCC_RTCCLKCmd(ENABLE);//使能RTC时钟RTC_InitStructrue.RTC_AsynchPrediv=0x7F;//RTC异步分频系数127RTC_InitStructrue.RTC_SynchPrediv=0xFF;//RTC同步分频系数255RTC_Init(&RTC_InitStructrue);//RTC初始化函数RTC_WriteBackupRegister(RTC_BKP_DR0,0x5050);}return 0;
}

然后配置RTC_WakeUp:

void RTC_Set_WakeUp(u16 waketime)
{EXTI_InitTypeDef EXTI_InitStruct;NVIC_InitTypeDef NVIC_InitStruct;RTC_WakeUpCmd(DISABLE);//关闭Wake UpRTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);//时钟选择1HzRTC_SetWakeUpCounter(waketime);//设置WakeUp自动重装载值RTC_ClearITPendingBit(RTC_IT_WUT);//清除WakeUp中断标志EXTI_ClearITPendingBit(EXTI_Line22);//清除Line22中断标志RTC_ITConfig(RTC_IT_WUT,ENABLE);//开启WakeUp中断标志RTC_WakeUpCmd(ENABLE);//开启WakeUpEXTI_InitStruct.EXTI_Line=EXTI_Line22;//LINE22EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿触发EXTI_Init(&EXTI_InitStruct);NVIC_InitStruct.NVIC_IRQChannel=RTC_WKUP_IRQn;//选择WakeUp中断NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0x01;NVIC_InitStruct.NVIC_IRQChannelSubPriority=0x02;NVIC_Init(&NVIC_InitStruct);
}

编写RTC_WakeUp中断函数(记得初始化系统时钟):

void RTC_WKUP_IRQHandler()
{while(RTC_GetFlagStatus(RTC_FLAG_WUTF)!=RESET){RTC_ClearFlag(RTC_FLAG_WUTF);SystemInit();LED1=!LED1;}EXTI_ClearITPendingBit(EXTI_Line22);
}

然后就是main函数了:

int main(void)
{ u8 t=0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);      //初始化延时函数uart_init(9600);        //初始化串口波特率为9600LED_Init();                   //初始化LED         KEY_Init();MyRTC_Init();while(1){LED0=!LED0;RTC_Set_WakeUp(5);//时钟频率选的1Hz,5S产生一次RTC_WakeUp中断printf("t=%d\n\r",t);PWR_EnterSTOPMode(PWR_LowPowerRegulator_ON,PWR_STOPEntry_WFI);t++;if(t>30)t=0;}

把USART1接串口调试助手上,变量t从0开始每5秒加1,同时LED每5秒反转一次状态.
**注意哈:
停止模式是烧录不进程序的,要烧录程序的话,要先按住RESET键,点download后,松手就能下进去了.**

RTC_WakeUp中断唤醒STM32F4停止模式相关推荐

  1. CC2530基础实验:(10)系统睡眠唤醒--中断唤醒

    目录 前言 一.实验相关电路图 二.实验相关理论与寄存器 三.源码分析 前言 1) 为什么要睡眠? Zigbee的特点就是远距离低功耗的无线传输设备,节点模块闲时可以 进入睡眠模式,在需要传输数据时候 ...

  2. STM32F103 低功耗停止模式与待机模式操作

    工程中用到低功耗的控制,本来想使用待机模式,后来发现待机后所有IO口为高阻态,这样对于一些IO口控制的外设有些不妥,想过外部上拉一个电阻可是功耗不好控制放弃该方案选用停止模式.停止模式后IO口保持停止 ...

  3. STM32停止模式进入中断以及中断唤醒遇到的问题及解决办法

    首先介绍一下使用环境:STM32CUBEIDE.STM32L051K8T6.Stop模式. 由于最近需要用到低功耗模式,所以也是第一次使用低功耗模式,把自己遇到的问题记录一下. 无法进入stop模式 ...

  4. stm32进入停止模式,中断 唤醒

    1.程序说明: a.此程序基于HY-STM32开发板. b.自动进入停止模式 c.按键中断实现唤醒 2.完整工程网址 a.基于iar软件 http://download.csdn.net/detail ...

  5. stm32l0的停止模式怎么唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第二十二章 待机唤醒实 ...

  6. stm32l0的停止模式怎么唤醒_「正点原子STM32Mini板资料连载」第十九章 待机唤醒实验...

    1)实验平台:正点原子STM32mini开发板 2)摘自<正点原子STM32 不完全手册(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第十九章 待机唤醒实验 本章我们将向 ...

  7. 【STM32笔记】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全的问题)

    [STM32笔记]HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒.串口唤醒和回调无法一起使用.接收数据不全的问题) [STM32笔记]低功耗模式配置及避坑汇总 前文: blog.csd ...

  8. STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例)

    STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例) 目录 STM32CubeMX | STM32 F1系列HAL库低功耗 ...

  9. STM32停止模式唤醒不恢复时钟的后果

    关于STM32的低功耗详细解析请在 STM32低功耗模式解读中查看,在里面讲到当STM32在停止模式时,芯片1.8V区域时钟别关闭,HSI,HSE时钟也被关闭,当某个使能的中断或事件发生后,STM32 ...

最新文章

  1. 用递归方法对二叉树进行先序、中序和后序遍历
  2. Windows xp/Vista/Linux的内核映射以及内存置换算法
  3. 【图像处理】图像内插“最近邻插值 最近邻内插法(Nearest Neighbour Interpolate)”代码演示(调整图像大小、放大、缩小)
  4. Linus:“我删除了Linux,因为它就是个垃圾!”
  5. 具体解释VB中连接access数据库的几种方法
  6. 通过Socket实现文件上传/上传文件
  7. 在给定约束下可以使用a,b和c形成的字符串数
  8. 致力微商_致力于自己。 致力于公益组织。
  9. Oracle 练习P297 131026 PL/SQL块程序
  10. 命令行shell 用于SQLite
  11. 以太坊PHP离线交易签名生成,以太坊web3.sendRawTransaction离线签名交易
  12. Alfred Remote初体验
  13. numpy与matplotlib的学习报告
  14. Django序列化django REST framework
  15. 操作系统知识盘点(四)(内存技术)
  16. FPN与DSSD的对比
  17. java调用R语言传参数时,RserveException: eval failed Syntax error
  18. table标签的不规则布局
  19. IoC与DI浅显易懂的讲解
  20. mac安装opencv(C++)

热门文章

  1. sharepoint 2016 学习系列篇(3)-如何部署sharepoint server 2016(2)-数据库服务器安装和部署
  2. java代码测试数据库连接
  3. 2022科大讯飞飞机航班延误率预测挑战赛前10方案分享
  4. Mysql连接查询分哪几种_数据库的几种连接查询
  5. 防患于未然是最好的解决勒索软件方法
  6. Velodyne VLP-16 激光雷达的使用
  7. mysql如何替换字符串中换行符及回车符
  8. JS获取标签类名(class)应注意的事项
  9. 良心安利饮品 饮料 酒水免抠摄影素材网站
  10. mysql时间戳问题