简介
AT32F437 系列MCU 工作电压范围为2.6V 至3.6V,为了降低功耗,提供了三种省电模式——睡眠模式,深度睡眠模式和待机模式,使用户可以在CPU 运行时间要求、速度和功耗进行折中取舍。三种低功耗模式下功耗依次为:睡眠模式>深度睡眠模式>待机模式。
资源准备
硬件环境:
对应产品型号的AT-SURF-F437 Board
软件环境:
AT32F435_437_Firmware_Library_V2.x.xprojectat_sufr_f437exampleslow_power_mode
硬件设计
本案例使用的硬件资源有两个独立按键,对应的引脚如下:
对应的电路原理如下:
软件设计
1) 低功耗测试
将按键配置成EXINT 上升沿触发模式,用于唤醒低功耗模式
MCU 进入低功耗模式
按下按键唤醒低功耗模式
2) 代码介绍
main 函数代码描述
int main(void)
{
/* 初始化系统时钟 */
system_clock_config();
/* 初始化中断优先级分组 */
nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
/* 初始化延时函数 */
delay_init();
/* 初始化LCD */
lcd_init(LCD_DISPLAY_VERtiCAL);
/* 初始化唤醒引脚(按键2) */
wakeup_pin_init();
/* 使能PWC 时钟 */
crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK, TRUE);
/* 显示信息 */
lcd_string_show(5, 20, 310, 24, 24, (uint8_t *)"Low power mode test");
/* 延迟1 秒 */
delay_ms(1000);
#if defined TEST_SLEEP_MODE
/* 显示信息 */
lcd_string_show(5, 60, 310, 24, 24, (uint8_t *)"Enter sleep mode");
lcd_string_show(5, 90, 310, 24, 24, (uint8_t *)"Prese button 2 to wakeup");
/* 进入sleep 模式 */
pwc_sleep_mode_enter(PWC_SLEEP_ENTER_WFI);
/* 从sleep 模式唤醒 */
lcd_string_show(5, 140, 310, 24, 24, (uint8_t *)"Wakeup from sleep mode");
#elif defined TEST_DEEPSLEEP_MODE
/* 显示信息 */
lcd_string_show(5, 60, 310, 24, 24, (uint8_t *)"Enter deepsleep mode");
lcd_string_show(5, 90, 310, 24, 24, (uint8_t *)"Prese button 2 to wakeup");
/* 配置LDO 模式 */
pwc_voltage_regulate_set(PWC_REGULATOR_LOW_POWER);
/* 进入deepsleep 模式 */
pwc_deep_sleep_mode_enter(PWC_DEEP_SLEEP_ENTER_WFI);
/* 初始化系统时钟 */
system_clock_config();
/* 从deepsleep 模式唤醒 */
lcd_string_show(5, 140, 310, 24, 24, (uint8_t *)"Wakeup from deepsleep mode");
#endif
while(1)
{
}
}
下载验证
1.在上电1 秒后进入低功耗模式
2.当按键2 按下时从低功耗模式唤醒
|