赞
踩
简介
AT32F437 系列MCU 工作电压范围为2.6V 至3.6V,为了降低功耗,提供了三种省电模式——睡眠模式,深度睡眠模式和待机模式,使用户可以在CPU 运行时间要求、速度和功耗进行折中取舍。三种低功耗模式下功耗依次为:睡眠模式>深度睡眠模式>待机模式。
资源准备
硬件环境:
对应产品型号的AT-SURF-F437 Board
软件环境:
AT32F435_437_Firmware_Library_V2.x.x\project\at_sufr_f437\examples\low_power_mode
硬件设计
本案例使用的硬件资源有两个独立按键,对应的引脚如下:
对应的电路原理如下:
低功耗测试
将按键配置成EXINT 上升沿触发模式,用于唤醒低功耗模式
MCU 进入低功耗模式
按下按键唤醒低功耗模式
代码介绍
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 按下时从低功耗模式唤醒
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。