2024-04-23 13:39:54 +00:00
|
|
|
|
---
|
|
|
|
|
created: 2024-04-23
|
|
|
|
|
tags:
|
|
|
|
|
- "#RISC_V"
|
|
|
|
|
- "#低功耗"
|
|
|
|
|
- "#CH57X"
|
|
|
|
|
- 代码块
|
|
|
|
|
- mcu
|
|
|
|
|
---
|
|
|
|
|
# 低功耗
|
2024-04-23 14:04:32 +00:00
|
|
|
|
使用官方例子最低功耗仍有约2mA,经察,默认GPIO的配置由`GPIO_ModeIN_PU`改为`GPIO_ModeIN_PD`能显著降低功耗,可低至约35uA,代码如下:
|
|
|
|
|
```c hl:26-27
|
2024-04-23 13:39:54 +00:00
|
|
|
|
/*********************************************************************
|
|
|
|
|
* @fn DebugInit
|
|
|
|
|
*
|
|
|
|
|
* @brief 调试初始化
|
|
|
|
|
*
|
|
|
|
|
* @return none
|
|
|
|
|
*/
|
|
|
|
|
void DebugInit(void)
|
|
|
|
|
{
|
|
|
|
|
GPIOA_SetBits(GPIO_Pin_9);
|
|
|
|
|
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);
|
|
|
|
|
UART1_DefInit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
|
|
|
* @fn main
|
|
|
|
|
*
|
|
|
|
|
* @brief 主函数
|
|
|
|
|
*
|
|
|
|
|
* @return none
|
|
|
|
|
*/
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
SetSysClock(CLK_SOURCE_PLL_60MHz);
|
|
|
|
|
|
|
|
|
|
GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD);
|
|
|
|
|
GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD);
|
|
|
|
|
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);
|
|
|
|
|
/* 配置串口调试 */
|
|
|
|
|
DebugInit();
|
|
|
|
|
PRINT("Start @ChipID=%02x\n", R8_CHIP_ID);
|
|
|
|
|
DelayMs(200);
|
|
|
|
|
|
|
|
|
|
PRINT("sleep mode sleep \n");
|
|
|
|
|
DelayMs(2);
|
|
|
|
|
LowPower_Sleep(RB_PWR_RAM16K | RB_PWR_RAM2K); //只保留14+2K SRAM 供电
|
|
|
|
|
HSECFG_Current(HSE_RCur_100); // 降为额定电流(低功耗函数中提升了HSE偏置电流)
|
|
|
|
|
DelayMs(5);
|
|
|
|
|
PRINT("wake.. \n");
|
|
|
|
|
DelayMs(500);
|
|
|
|
|
while(1);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
参考的一些例子:
|
|
|
|
|
[基于CH573的BLE温湿度传感器](https://yuanze.wang/posts/ch573-temp-humid-beacon/),源码可编译
|
|
|
|
|
[CH571F无线温湿度计](https://oshwhub.com/thelight/ch571f-wu-xian-wen-shi-du-ji),源码不能正常编译
|
|
|
|
|
|
|
|
|
|
|