用中断配合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_H
void 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();
}
}
————————————————
版权声明:本文为CSDN博主「chem4111」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46286415/article/details/149632279
|
|