使用STM32L433电路板,使用例程检测到电流达不到手册上的值
检测结果
代码例程为:
/****************************************************************************
* 名 称: void LowPower_Config(void)
* 功 能: 低功耗初始化
* 入口参数:
* 出口参数:
* 说 明:
****************************************************************************/
void LowPower_Config(void)
{
__HAL_RCC_PWR_CLK_ENABLE(); // 运行电源管理时钟
#ifdef __rtc_H
// 低功耗模式下RTC 允许访问 ,RTC唤醒需要
HAL_PWR_EnableBkUpAccess();
// 禁止唤醒时钟计数
HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
#else
// 修改RTC时钟时钟源
RCC_PeriphCLKInitTypeDef PeriphClkInit;
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_NONE;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
__HAL_RCC_RTC_DISABLE(); // 先暂停备份区域内的RTC时钟
__HAL_RCC_RTCAPB_CLK_DISABLE(); // 再暂停APB总线上的RTC时钟
HAL_PWR_DisableBkUpAccess(); // 最后才暂停整个备份区域的时钟
#endif
// 禁止 PVD
HAL_PWR_DisablePVD();
// 禁用Flash预存取,降低性能,降低功耗
__HAL_FLASH_PREFETCH_BUFFER_DISABLE();
// Sleep模式下,可以Flash进入低功耗模式
__HAL_FLASH_SLEEP_POWERDOWN_ENABLE();
// 关闭VREFINT 少3uA
// HAL_PWREx_EnableUltraLowPower();
// 忽略VREFINT 加快启动速度
// HAL_PWREx_EnableFastWakeUp();
// 唤醒后选择哪个启动时钟源
__HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_MSI);
// 降低核心工作电压,需要根据实际工作频率设置,建议在Cubemx内的RCC项目中配置
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
// 优先停用不需要的GPIO时钟
__HAL_RCC_GPIOC_CLK_DISABLE();
#if defined (__STM32L0xx_HAL_H) || defined (__STM32L1xx_HAL_H) || defined (__STM32L4xx_HAL_H)
__HAL_RCC_GPIOH_CLK_DISABLE();
#endif
//________________________ L4特用功能 Sleep、Stop模式下允许个总线上的外设时钟
#if defined (__STM32L4xx_HAL_H)
// 初始化先设置全部禁用
RCC->AHB1SMENR = 0x0;
RCC->AHB2SMENR = 0x0;
RCC->AHB3SMENR = 0x0;
RCC->APB1SMENR1 = 0x0; //RTC
RCC->APB1SMENR2 = 0x0;
RCC->APB2SMENR = 0x0;
#ifdef __rtc_H
__HAL_RCC_RTCAPB_CLK_SLEEP_ENABLE(); // Sleep、Stop模式下 使能RTC时钟
#endif
//定义 Sleep、Stop模式下 使能外设时钟
// __HAL_RCC_PWR_CLK_SLEEP_ENABLE();
// __HAL_RCC_USART1_CLK_SLEEP_ENABLE();
//
// __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE();
// __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE();
// __HAL_RCC_LCD_CLK_SLEEP_ENABLE();
//________________________ L4特用功能 Standby和Shutdown保存IO输出电平
#ifdef __BSP_LPUSART__
__HAL_RCC_LPUART1_CLK_SLEEP_ENABLE();
// 需要保持 RX上拉高电平,否则造成灌流或者FE错误
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// LPUSART 唤醒只能选用 HSI 或 LSE
__HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_HSI);
#else
HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_A, PWR_GPIO_BIT_0 | PWR_GPIO_BIT_14 |PWR_GPIO_BIT_9 | PWR_GPIO_BIT_10); // 保持key1和SWDCLK的电平
HAL_PWREx_EnableGPIOPullUp(PWR_GPIO_A, PWR_GPIO_BIT_13 ); // 保持串口和SWDIO的电平
HAL_PWREx_EnableGPIOPullUp(PWR_GPIO_B,PWR_GPIO_BIT_1);// 保持LED电平
HAL_PWREx_EnablePullUpPullDownConfig();
#endif
#endif
}
不知道什么原因,请各位大神帮我解答一下疑惑~~ 跪谢
|