1、 STOP停止模式实验停止模式实验 ? 意义与作用意义与作用 在系统或电源复位以后,微控制器处于运行状态。当 CPU 不需继续运行时,可以利用 多种低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快 速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。 本实现通过神舟V号STM32开发板学习STM32的低功耗模式中的STOP停止模式。 ? 实验原理实验原理 本实验使 STM32 进入停止模式, 并利用 KEY2 按键产生的外部中断线或者 RTC 闹钟报 警来唤醒 STM32。通过指示灯和串口来指示处理器的当前模式。 神舟IV号开发板上的4个LED指示灯的含义:
2、LD1亮表示处理器处于运行模式、LD1灭表示处理器处于停止模式; LD2:每次检测到按键KEY2的中断则状态变化一次; LD3:每次发生RTC闹钟报警中断则状态变化一次; LD4:处理器处于运行模式时闪烁,处理器处于停止模式保持。 停止模式是在Cortex-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模 式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止, PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。 在停止模式 下,所有的I/O引脚都保持它们在运行模式时的状态。 进入停止模式: 关于如何进入停止模式,详见表11。
3、在停止模式下,通过设置电源控制寄存器 (PWR_CR)的LPDS位使内部调节器进入低功耗模式,能够降低更多的功耗。 如果正在进 行闪存编程,直到对内存访问完成,系统才进入停止模式。 如果正在进行对APB的访问, 直到对APB访问完成,系统才进入停止模式。 可以通过对独立的控制位进行编程,可选择以下功能: 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动 了独立看门狗,除了系统复位,它不能再被停止。 实时时钟(RTC):通过备份域控制寄存器 (RCC_BDCR)的RTCEN位来设置。 内部RC振荡器(LSI RC):通过控制/状态寄存器 (RCC_CSR)的L
4、SION位来设置。 外部32.768kHz振荡器(LSE):通过备份域控制寄存器(RCC_BDCR)的LSEON位设置。 在停止模式下,如果在进入该模式前ADC和DAC没有被关闭,那么这些外设仍然消耗 电流。通过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外 设。 退出停止模式 关于如何退出停止模式,详见下表。 当一个中断或唤醒事件导致退出停止模式时,HSI RC振荡器被选为系统时钟。 当电压调节器处于低功耗模式下,当系统从停止模式退出时, 将会有一段额外的启动延时。 如果在停止模式期间保持内部调节器开启, 则退出启动时间会 缩短,但相应的功耗会增加。 下
5、面的表格说明如何进入和退出停止模式: ? 硬件设计硬件设计 STOP 停止模式是 STM32 处理器的一种低功耗模式,这部分不需要特殊硬件电路,只要 最小系统运行正常即可,本实验使用的按键、指示灯和串口电路请参考前面的相关章节。 ? 软件设计软件设计 我们先从 MAIN 函数看起,如下所示,第一部分是初始化串口、LED 指示灯等等,这 部分知识在前面章节已经讲解过,请回顾相关章节的知识。 接下来是 RTC 中断和按键中断初始化,相关函数在后面讲解 接着是提示信息的打印: 最后是循环延迟工作一段时间后进入 STOP 停止模式(PWR_EnterSTOPMode)等待按 键中断或中 RTC 闹钟中
6、断来唤醒处理器回到正常的工作模式: MAIN函数中的EXTI_Configuration函数是配置使能外部中断第 17 线的上升边沿触发, 这样才能产生 RTC 闹钟报警中断: MAIN 函数中的 NVIC_Configuration 函数是配置嵌套中断向量表, 使能并设置外部中断 第 17 线的 RTC 闹钟报警中断优先级: MAIN 函数中的 SysTick_Configuration 函数是系统滴答中断及其中断优先级: 这样在运 行模式时使 LED4 闪烁。 中断处理函数如下:中断处理函数如下: 系统滴答中断时使 LED4 闪烁 按键 KEY2 中断唤醒处理器后改变 LED2 状态 RT
7、C 闹钟中断唤醒处理器后改变闹钟中断唤醒处理器后改变 LED3 状态状态 ? 下载与验证下载与验证 神舟IV号光盘源码目录包含本实验的工程源码,在神舟IV号光盘源码20、STOP停止 模式.rarProject20、STOP停止模式EWARMv5STM32F107VC-ARMJISHUExe目录下的 ARMJISHU_STOP停止模式.hex文件即为前面我们分析的STOP停止模式实验编译好的固 件,我们可以直接将固件下载到神舟IV号开发板中,观察运行效果。 如果使用JLINK下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。下载固件 到神舟IV号开发
8、板小节进行操作。 如果使用USB下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行操 作。 如果使用串口下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行 操作。 如果在IAR开发环境中, 下载编译好的固件或者在线调试, 请按错误! 未找到引用源。错误! 未找到引用源。 错误!未找到引用源。错误!未找到引用源。小节进行操作。 如果在MDK开发环境中,下载编译好的固件或者在线调试,请按错误!未找到引用源。错误!未找到引用源。 错误!未找到引用源。错误!未找到引用源。小节进行操作。 ? 实验现象
9、实验现象 本实验使 STM32 进入停止模式, 并利用 KEY2 按键产生的外部中断线或者 RTC 闹钟报 警来唤醒 STM32。通过指示灯和串口来指示处理器的当前模式。 神舟IV号开发板上的4个LED指示灯的含义: LD1亮表示处理器处于运行模式、LD1灭表示处理器处于停止模式; LD2:每次检测到按键KEY2的中断则状态变化一次; LD3:每次发生RTC闹钟报警中断则状态变化一次; LD4:处理器处于运行模式时闪烁,处理器处于停止模式保持。 将固件下载在神舟 IV 号 STM32 开发板后,用随板配置的串口线连接神舟 IV 号串口 2 与电脑的串口,打开超级终端,串口参数配置为。 神舟开发板自动进入停止模式, 用户可以使用 KEY2 按键产生的外部中断唤醒 STM32, 或者 5 秒后 RTC 闹钟报警自动唤醒 STM32: