对于一些电池供电的设置功耗是比较敏感的,所以就避免不了采用MCU的休眠模式。M3/M4等芯片基本都会有3种休眠模式,本测试程序使用的是STOP模式,该模式进入休眠后唤醒SRAM和外设内容保存不变,采用外部中断唤醒,通过一个按键可实现某种意义上的开关机电路。
因为RTC的Alram也和外部中断线相连,所以可以用来唤醒STOP休眠。进入STOP休眠唤醒后系统时钟为内部8M时钟,需要根据需要重新配置系统时钟。程序唤醒后从先进入唤醒的外部中断,然后执行进入STOP休眠的下一条代码。如果要在唤醒中断中执行某种操作,比如我们这个DEMO输出串口数据,那么就要在唤醒的中断中恢复系统时钟。 唤醒后使用内部时钟 唤醒代码如下:
需要注意的是进入STOP模式后就没法下载程序了,如果程序还在调试阶段的时候,进入STOP模式前尽量做些延时,要不然一上电就STOP模式,如果唤醒的程序有问题的话,那就有可能呵呵了。。。。。 这个DEMO进入STOP模式延时了2s了,如果下载时正好在STOP模式,按下开发板的复位键,2s可以下载更新程序。 |
F303RE_StopMode.rar
下载393.99 KB, 下载次数: 1515, 下载积分: ST金币 -1
Alarmå¤éSTOPä¼ç
【STM32F303开发】开发学习笔记、教程集合贴
【合集】STM32F303开发教程
【STM32F303开发】+ 使用片内的CCMRAM缩短代码执行时间
【STM32F303开发】(五)TIM定时器PWM的输出与捕获
【STM32F303开发】+ 内部Flash模拟EEPROM
【STM32F303开发】+如何解析GPS数据
【STM32F303开发】+使用fromelf反汇编keil生成的AXF文件
使用STM32F303VBT6的SPI驱动TM1629A
【STM32F303开发】+ 使用SWO输出调试信息到Debug Viewer窗口
【STM32F303开发】基础:工程模板+LED+USART+常用文档+按键中断
//当秒达到60s时要转换为0s,否则无法唤醒STOP休眠
//by creep
if(RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds == 60)RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds=0;
之前一直使用标准库开发,所以也就不想马上转换到HAL上面了。
不过,随着ST对HAL的重视,估计以后应该是HAL的天下了。
多谢分享,学习了