程序问题
问题1:在程序不同位置进入停机(HAL_PWR_EnterSTOPMode)功耗不同。
说明:在程序刚开始直接进入停机模式后,功耗可以直接维持在16ua左右,但是在之后经过ADC检测程序后进入停止功耗会提高到1ma左右。原因是,ADC检测以后没有将ADC停止。
停机程序如下。
void EnterStopMode(void)
{
HAL_SuspendTick(); //暂停系统滴答定时器,对于停机很有效果
GPIO_InitTypeDef GPIO_InitStruct;
// // 初始化 GPIO_InitStruct
GPIO_InitStruct.Pin = GPIO_PIN_All; // 使用 GPIO_PIN_All 表示所有引脚
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; // 设置模式为模拟输入
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不使用上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 选择低速度
// 应用配置到所有 GPIO 引脚
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 这里的 GPIOx 应替换为你要初始化的 GPIO 端口
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); // 这里的 GPIOx 应替换为你要初始化的 GPIO 端口
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); // 这里的 GPIOx 应替换为你要初始化的 GPIO 端口
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); // 这里的 GPIOx 应替换为你要初始化的 GPIO 端口
HAL_GPIO_Init(GPIOF, &GPIO_Init