[综合信息] HC32 睡眠

[复制链接]
2239|1
Zhiniaocun 发表于 2025-9-5 16:23 | 显示全部楼层 |阅读模式
GPIO, pi, IO, HC, gp, EE
用中断配合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

吾要单片机 发表于 2025-9-8 19:21 | 显示全部楼层
睡眠电流太大了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

260

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部