当前文档版本为 v0.5.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

lp_deepsleep例程

1 功能概述

本例程主要演示 EVB GPIO/WakeupCounter 唤醒处于deepsleep状态MCU的简单例程,例程设定WakeupCounter 4s 唤醒一次MCU,KEY1按下瞬间唤醒MCU,MCU被唤醒后,点亮蓝色LED,约50ms后熄灭蓝色LED,MCU再次进入deepsleep状态,以上过程循环。

注:KEY1对应P1_5;RGB蓝色指示灯对应P1_2

2 环境要求

  • Board: PAN2628b1_evb

  • Micro USB线两2根,一根用于程序下载,一根用于查看串口打印Log

  • 将 J17 单刀双掷开关拔至PWM1侧,将P1_2与RGB蓝色指示灯控制引脚相连

  • KEY1 独占 P1_5,不需要拔开关

3 编译和烧录

例程位置:pan2628_dk\01_SDK\example_basic\lp\lp_deepsleep

打开目录下keil下的lp_deepsleep.uvprojx工程,编译整个代码工程。

注意烧写此工程代码后,若要再次烧写代码必须要按下RST KEY后2秒内进行烧写,否则MCU进入低功耗后,无法进行代码烧写

4 演示说明

根据环境要求一节的介绍,正确连接 EVB 开发板的跳线,编译、下载代码后:

  1. 等待蓝色LED熄灭,大约2秒时间,由于MCU进入deepsleep后,无法进行烧写,这2秒时间留给再次烧写代码的时间窗口

  2. 在不按KEY1的情况下观察蓝色led工作状态,大约4秒时间蓝色led灯亮一次,表示MCU被WakeupCounter唤醒

  3. 不断按下KEY1,观察蓝色led灯是否被KEY1事件点亮。

5 开发说明

通过调用 lp.c中的LP_ExIntSourceSelect()、WakeupGpioConfig()、LP_WakeCounterConfig()等函数接口来实现低功耗功能,详细请查阅代码。

 /** Config EXTERN_INT0/1 as wakeup interrupt */
 LP_ExIntSourceSelect(INT_SEL_WAKEUP);

 /** Config P15 as wakeup pin */
 LP_WakeupGpioConfig(GPIO_PORT1, GPIO_Pin_5, GPIO_LOW);
 LP_WakeupGpioEnable(GPIO_PORT1, GPIO_Pin_5, ENABLE);

 LP_WakeCounterConfig(CNT_4096000_US, WAKEUP_CNT_ONESHOT);
 LP_WakeupCounterStart();

6 RAM/Flash资源使用情况

Program Size: data=14.0 xdata=0 const=8 code=1249