HC32 睡眠
1.上一个配置了中断 这里用中断配合sleep
hd_deepsleep.c
#include "ddl.h"
#include "gpio.h"
#include "hd_deepsleep.h"
#include "lpm.h"void App_LowPowerModeGpioSet(void)
{///< 打开GPIO外设时钟门控Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);//swd as gpio
// Sysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE);///< 配置为数字端口M0P_GPIO->PAADS = 0;M0P_GPIO->PBADS = 0;M0P_GPIO->PCADS = 0;M0P_GPIO->PDADS = 0;M0P_GPIO->PEADS = 0;M0P_GPIO->PFADS = 0;M0P_GPIO->PADIR = 0XFFFF;M0P_GPIO->PBDIR = 0XFFFF;M0P_GPIO->PCDIR = 0XFFFF;M0P_GPIO->PDDIR = 0XBFFF;M0P_GPIO->PEDIR = 0XFFFF;M0P_GPIO->PFDIR = 0XFFFF;M0P_GPIO->PAPD = 0xFFFF;M0P_GPIO->PBPD = 0xFFFF;M0P_GPIO->PCPD = 0xFFFF;M0P_GPIO->PDPD = 0xFFFF;M0P_GPIO->PEPD = 0xFFFF;M0P_GPIO->PFPD = 0xFFFF;}void System_EnterDeepsleep(void)
{stc_gpio_cfg_t gpiocfg;DDL_ZERO_STRUCT(gpiocfg);App_LowPowerModeGpioSet();gpiocfg.enDir = GpioDirIn;gpiocfg.enPu = GpioPuEnable;gpiocfg.enPd = GpioPdDisable;Gpio_Init(GpioPortA,GpioPin7,&gpiocfg);Lpm_GotoDeepSleep(TRUE);
}
hd_deepsleep.h
#ifndef HD_DEEPSLEEP_H
#define HD_DEEPSLEEP_Hvoid App_LowPowerModeGpioSet(void);
void System_EnterDeepsleep(void);#endif
实现正常工作6.8-7.42ma左右 ,睡眠1.58-1.66ma
pa7是按键,pd14是led灯
主任务调用
static void vI2CTask(void *pvParameters)
{
while (1) {
vTaskDelay(pdMS_TO_TICKS(45000));
Gpio_ClrIO(GpioPortD, GpioPin14);
System_EnterDeepsleep();
}
}