基于LL库开发L0系列芯片的低功耗应用

本文介绍了STM32L0系列微控制器的低功耗模式,如Stop和Standby模式,并详细阐述了如何通过WFI指令进入这些模式。在进入低功耗模式前,通过设置所有引脚为模拟输入模式以降低功耗,但需要注意这将禁用SWD调试。此外,还展示了如何配置RTC并设置RTC中断唤醒,以在特定时间间隔后唤醒芯片。

预备

  • stm32L0系列的低功耗有Low-power run,Sleep,Low-power sleep, Stop, Standby等5种模式, 其中standby模式最省电, 但是注意该模式会使芯片掉内存的数据, 而stop模式,只是将CPU,时钟等停止(不包括LSE,LSI时钟), ram的数据依然能被保存。
  • 低功耗模式中除了低功耗运行模式之外 Low-power modes (except for Low-power run mode) 都通过执行WFI(Wait For Interrupt)或者 WFE (Wait for Event)指令来进入低功耗模式, 该指令会停止mcu核心来节省电量, 然后等待唤醒中断或者事件。
  • 芯片进入低功耗模式之后, 就只能通过串口来烧写程序了, SWD调试也被关闭了。
  • 将所有引脚配置为 LL_GPIO_MODE_ANALOG模式, 可以避免引脚开启施密特触发器以及上拉,下拉带来的电量损耗,但是注意该配置会将引脚功能重映射, 使得SWD调试无法进行,此时 只能通过串口进行代码调试
  • 芯片初步启动的时候由MSI的时钟来执行跳转配置时钟等程序,时钟配置之后才切换生效。

代码

  • 其实没什么难度, 直接查看配置代码吧。
  • 配置引脚为anglog模式:
void ReduceIOPowerConsumption(void){
   
   
	
 LL_GPIO_InitTypeDef gpio_initstruct = {
   
   LL_GPIO_PIN_ALL, LL_GPIO_MODE_ANALOG, 
                                         LL_GPIO_SPEED_FREQ_HIGH, LL_GPIO_OUTPUT_PUSHPULL, 
                                         LL_GPIO_PULL_NO, LL_GPIO_AF_0};

  /* Set all GPIO in analog state to reduce power consumption,                */
  /* Note: Debug using ST-Link is not possible during the execution of this   */
  /*       example because communication between ST-link and the device       */
  /*       under test is done through UART. All GPIO pins are disabled (set   */
  /*       to analog input mode) including  UART I/O pins.                    */
  LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA |
                           LL_IOP_GRP1_PERIPH_GPIOB |
                           LL_IOP_GRP1_PERIPH_GPIOC);

  LL_GPIO_Init(GPIOA, &gpio_initstruct);
  LL_GPIO_Init(GPIOB, &gpio_initstruct);
  LL_GPIO_Init
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值