#define DCDC_ENABLE? ? ? ? ? ? ? ? ? ? ? ? ?TRUE
#endif
#ifndef HAL_SLEEP
#define HAL_SLEEP? ? ? ? ? ? ? ? ? ? ? ? ? ?TRUE
這里設(shè)置了true
主程序這樣:
/********************************** (C) COPYRIGHT *******************************
?* File Name? ? ? ? ? : main.c
?* Author? ? ? ? ? ? ?: WCH
?* Version? ? ? ? ? ? : V1.0
?* Date? ? ? ? ? ? ? ?: 2020/08/06
?* Description? ? ? ? : 藍(lán)牙鍵盤應(yīng)用主函數(shù)及任務(wù)系統(tǒng)初始化
?*********************************************************************************
?* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
?* Attention: This software (modified or not) and binary are used for?
?* microcontroller manufactured by Nanjing Qinheng Microelectronics.
?*******************************************************************************/
/******************************************************************************/
/* 頭文件包含 */
#include "CONFIG.h"
#include "HAL.h"
#include "hiddev.h"
#include "hidkbd.h"
#include "MyBSP.h"
#include "CH58x_common.h"
/*********************************************************************
?* GLOBAL TYPEDEFS
?*/
__attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4];
#if(defined(BLE_MAC)) && (BLE_MAC == TRUE)
const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02};
#endif
/*********************************************************************
?* @fn? ? ? Main_CirculationTMOS
?*
?* @brief? ?主循環(huán)
?*
?* @return? none
?*/
__HIGH_CODE
__attribute__((noinline))
void Main_Circulation()
{
? ? while(1)
? ? {
? ? ? ? TMOS_SystemProcess();
? ? }
}
/*********************************************************************
?* @fn? ? ? main
?*
?* @brief? ?主函數(shù)
?*
?* @return? none
?*/
int main(void)
{
#if(defined(DCDC_ENABLE)) && (DCDC_ENABLE == TRUE)
? ? PWR_DCDCCfg(ENABLE);
#endif
? ? SetSysClock(CLK_SOURCE_PLL_60MHz);
#if(defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
? ? GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU);
? ? GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU);
#endif
#ifdef DEBUG
? ? GPIOA_SetBits(bTXD1);
? ? GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
? ? UART1_DefInit();
#if 1
? ? /* 配置喚醒源為 GPIO - PB22 */
? ? GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeIN_PU);
? ? GPIOB_ITModeCfg(GPIO_Pin_22, GPIO_ITMode_FallEdge); // 下降沿喚醒
? ? PFIC_EnableIRQ(GPIO_B_IRQn);
? ? PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE, Long_Delay);
#endif
#if 1
? ? PRINT("sleep mode sleep \n");
? ? DelayMs(2);
? ? // 注意當(dāng)主頻為80M時(shí),Sleep睡眠喚醒中斷不可調(diào)用flash內(nèi)代碼。
? ? LowPower_Sleep(RB_PWR_RAM30K | RB_PWR_RAM2K); //只保留30+2K SRAM 供電
? ? HSECFG_Current(HSE_RCur_100);? ? ? ? ? ? ? ? ?// 降為額定電流(低功耗函數(shù)中提升了HSE偏置電流)
? ? DelayMs(5);
? ? PRINT("wake.. \n");
? ? DelayMs(500);
#endif
#if 1
? ? PRINT("shut down mode sleep \n");
? ? DelayMs(2);
? ? LowPower_Shutdown(0); //全部斷電,喚醒后復(fù)位
? ? /*
? ? ?此模式喚醒后會(huì)執(zhí)行復(fù)位,所以下面代碼不會(huì)運(yùn)行,
? ? ?注意要確保系統(tǒng)睡下去再喚醒才是喚醒復(fù)位,否則有可能變成IDLE等級(jí)喚醒
? ? ?*/
? ? HSECFG_Current(HSE_RCur_100); // 降為額定電流(低功耗函數(shù)中提升了HSE偏置電流)
? ? PRINT("wake.. \n");
? ? DelayMs(500);
#endif
#endif
? ? PRINT("%s\n", VER_LIB);
? ? CH58X_BLEInit();
? ? MyBsp_Init();
? ? HAL_Init();
? ? GAPRole_PeripheralInit();
? ? HidDev_Init();
? ? HidEmu_Init();
? ? Main_Circulation();
}
void GPIOB_IRQHandler(void)
{
? ? GPIOB_ClearITFlagBit(GPIO_Pin_8);
}
/******************************** endfile @ main ******************************/
那么它到底什么時(shí)候進(jìn)入幾乎斷電?LowPower_Shutdown又什么時(shí)候會(huì)進(jìn)入到睡眠呢,如果我想4分鐘不動(dòng)就進(jìn)入睡眠應(yīng)該修改哪兒呢。