1
摘要
本篇应用笔记主要介绍华大单片机 HC32F460 系列芯片的停止模式注意事项。
2
华大HC32F460 系列的停止模式
2.1
简介
停止(STOP)模式是华大HC32F460 系列芯片三种低功耗模式之一,在停止模式中,CPU、大部分外设和时钟源都停止动作,芯片保持 CPU 内部寄存器和 SRAM 数据,外设状态和管脚状态。
2.2
寄存器介绍
1) PWR_PWRC1:电源模式控制寄存器,设定不同模式进去 STOP 模式时的驱动能力。
2) PWR_STPMCR:停止模式控制器,使能 STOP 模式以及设定 STOP 模式唤醒时 CLK、FLASH 状态。
3) INT_WUPEN:停止模式唤醒事件使能寄存器。
注意:进入 stop 模式之前必须设定 INT_WUPEN,使能相应唤醒事件,否则无法唤醒 stop 模式。
2.3 操作流程
2.3.1 进入停止模式
上图列出了进入停止模式的步骤,在停止模式中,芯片的外设和 CPU 都停止工作。
注意:当系统时钟为 HRC 和 MPLL 时,需切换系统时钟源至 MRC,其他时钟源只需打开HRC。
2.3.2 解除停止模式
停止模式可以通过复位和中断解除。
可以用于解除停止模式的复位方式有:
管脚复位
上电复位
欠压复位(BOR)
电压检测 1/2 复位
专用看门狗复位可以用于解除停止模式的中断事件有:
管脚中断 EIRQ0~15
电压检测 1/2 中断
专用看门狗下溢中断
实时时钟的周期中断
闹钟中断
唤醒定时器中断
比较器 1 中断
UART1_RXD0 中断
TIMER01_A 比较匹配中断
注意: 选择中断事件解除停止模式,需在进入停止模式之前操作 INT_WUPEN 寄存器,设定相应中断事件唤醒许可。
2.4 注意事项
1) 执行 WFI 进入停止模式之前,需确保 FLASH 不处于编程或者擦除状态(即
EFM_FSR.RDY=1),且振荡停止监测功能无效,否则芯片无法进入停止模式。
2) 执行 WFI 进入停止模式之前,需确保 DMA 处于停止状态(即DMA_EN.EN=0),否则芯片可能会出现不可保证的动作。
3) 执行 WFI 进入停止模式之前,需将 EIRQ 的数字滤波设置为无效,否则该中断不能用于STOP 唤醒。
4) 选择中断事件解除停止模式,在执行 WFI 进入停止模式之前,需使能相应中断事件唤醒停止模式(INT_WUPEN)。
5) 执行 WFI 进入停止模式之前,需确保其他外设中断(非 STOP 模式唤醒中断)都已关闭。否则其他中断的触发可能导致芯片出现不可保证的动作。唤醒后,再恢复其他外设中断状态,以免错过中断事件。
6) 执行 WFI 进入停止模式之前,须确保 HRC 震荡,若系统时钟为 HRC 和 MPLL,还需将系统时钟切换至 MRC,唤醒后再恢复系统时钟,恢复 HRC 状态。
7) 由中断事件将 MCU 从停止模式恢复时,需将系统从 MRC 恢复至用户时钟设定,并还原中断配置
- 其中第 4、5、6、7 点注意事项可通过自行关闭 NVIC 及时钟模块对应寄存器实现,或调用 HDSC 提供的 API 接口:。
➢
en_result_t enIntWakeupEnable(uint32_t u32WakeupSrc); (使能中断事件唤醒停止模
式)
➢
void PWC_EnterStopMd(void); (进入停止模式)
此函数额外占用约 100us@168MHz
➢
void PWC_IrqClkBackup(void); (备份用户时钟设置)
此函数额外占用约 50us@168MHz
➢
void PWC_IrqClkRecover(void)(恢复用户时钟设置)
此函数额外占用约 50us@168MHz
3
样例代码
3.1
代码介绍
用户可根据上述的操作流程及注意事项编写自己的代码来学习验证该模块,也可以直接通过华大半导体的网站获取到设备驱动库(Device Driver Library, DDL)的样例代码并使用其中的 LPM 里有关 stop mode的样例进行验证。
3.2 代码运行
用户可以通过华大半导体的网站获取到 HC32F460 的 DDL 的样例代码(lpm_stop_wkup),并配合评估用板(EV-HC32F460-LQFP100-050-V1.1)运行相关代码学习使用 STOP 模式。