STM32L053低功耗停机模式下中断唤醒

文章介绍了在STM32L053R8单片机上设置低功耗唤醒功能的过程,包括使用HAL_Init初始化,设置GPIO模式为上升沿中断,启用EXTI中断,以及在中断服务函数中的处理。待机功耗约为29-30μA,唤醒后功耗为3.8mA。
摘要由CSDN通过智能技术生成

*STM32L053R8 单片机低功耗唤醒
最近在做项目需要用到低功耗唤醒,在这自己总结一下经验,顺便做个调试记录。
在主函数文件
main函数

HAL_Init();
SystemClock_Config();
MX_GPIO_Init();

```bash
在这里插入代码片

HAL_init()函数中注意引脚初始化 外部中断我用的是 PB12

  GPIO_InitStruct.Pin = GPIO_PIN_12;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI2_3_IRQn, 1, 0);
  HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);

  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);

``
在 stm32l0xx_hal_gpio.c系统头文件中添加自己的中断代码

unsigned	int		u;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
//  /* Prevent unused argument(s) compilation warning */
//  UNUSED(GPIO_Pin);
	
		if(GPIO_Pin==GPIO_PIN_12)
		{
			  u++;
//			printf("zhongduan ....");
			
		   NVIC_SystemReset();				  // 复位
		 __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
		}
		
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);		



``

在 stm32l0xx_it.c 函数中 添加

/**
* @brief This function handles EXTI line 4 to 15 interrupts.
*/
void EXTI4_15_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI4_15_IRQn 0 */

	if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)==0)
	{
		  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
	}
}

```bash
在这里插入代码片

待机功耗在29-30 ua 功耗可以接受
在这里插入图片描述

唤醒后的功耗在3.8mA

在这里插入图片描述


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用STM32Cube配置低功耗模式的步骤如下: 1. 打开STM32CubeMX软件,选择对应的芯片型号STM32L431CBT6,创建一个新工程。 2. 在工程配置界面中,选择“电源管理”标签页。 3. 在“电源管理”标签页中,可以看到“低功耗模式”选项。选择需要使用的低功耗模式,例如“Stop mode”。 4. 配置低功耗模式唤醒源。在“电源管理”标签页中,可以看到“唤醒源”选项。选择需要使用的唤醒源,例如“外部中断线”。 5. 在“时钟配置”标签页中,配置外部中断线的时钟。选择需要使用的外部中断线,例如“EXTI0”。 6. 在“GPIO”标签页中,配置外部中断线对应的GPIO口。选择需要使用的GPIO口,例如“GPIOA Pin0”。 7. 生成代码并下载到芯片中运行。 以上是使用STM32Cube配置低功耗模式的基本步骤。需要注意的是,在实际应用中,需要根据具体的需求进行配置。例如,需要考虑唤醒源的电平、中断优先级等因素。 ### 回答2: STM32L431CBT6是一款低功耗型的ARM Cortex-M4微控制器,它配备了丰富的外设和功能。使用STM32Cube配置低功耗模式可以进一步优化该微控制器的电力消耗,延长电池寿命。 首先,确保已经安装了STM32Cube软件包。打开STM32CubeMX,创建一个新的工程,并选择对应的芯片型号(STM32L431CBT6)。 在"Pinout & Configuration"选项卡中,可以配置芯片的引脚和功能。这里需要注意,选择低功耗模式需要合理配置引脚的电流、功耗和功能。 接下来,点击"Power Consumption"选项卡,在这里可以配置芯片的功耗模式。选择合适的低功耗模式,如运行模式、睡眠模式停机模式,并根据需求选择适当的时钟频率和电压水平。 点击"Peripherals"选项卡,可以配置外设的功耗优化设置。设置每个外设的睡眠模式、功耗模式唤醒源,从而实现外设的低功耗化。 在"Configuration"选项卡中,可以配置其他的系统参数和选项,如时钟源、RTC配置、窗口看门狗、低功耗ADC等,以进一步优化系统的功耗。 完成以上配置后,点击"Project"菜单,选择"Generate code"。根据生成的代码,在开发环境中进行代码开发及编译。 使用STM32Cube配置低功耗模式时,还需要注意以下几点: 1.合理地利用低功耗模式,根据实际需求选择适当的模式。不同的模式具有不同的功耗和性能折衷。 2.配置外设的低功耗模式时,需考虑到唤醒和睡眠过程中外设的状态切换,以确保正确的系统功能和外设的操作。 3.在设计硬件电路时,应根据低功耗模式的需求选择合适的电源管理电路,以保证系统的稳定低功耗运行。 总之,通过使用STM32Cube配置低功耗模式,我们可以针对特定的应用需求对芯片进行功耗优化,从而实现低功耗、高效能的系统运行。 ### 回答3: STM32L431CBT6是一款低功耗的ARM Cortex-M4微控制器,可通过STM32Cube软件进行配置。下面是使用STM32Cube配置低功耗模式的步骤。 1. 下载和安装STM32Cube软件套件,并确保已正确安装了ST-Link驱动程序。 2. 打开STM32CubeMX配置工具,并创建一个新的工程。选择STM32L431CBT6作为目标微控制器。 3. 在Pinout & Configuration选项卡中,配置所有需要的引脚和外设。 4. 在Power Consumption设置中,可以选择使用哪种低功耗模式。根据实际需求,可以选择Sleep、Stop、Standby或Shutdown模式。 5. 在Configuration阈值中,设置待机模式唤醒源。可以选择定时器、外部中断或其他外部事件。 6. 在配置完成后,点击"Project"菜单,选择"Generate Code"生成工程代码。 7. 打开生成的代码,找到main.c文件,并在其中添加低功耗模式相关的代码。 8. 根据选择的低功耗模式,在main函数中添加相应的代码。例如,如果选择Stop模式,可以在main函数中添加以下代码: HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); 9. 编译和下载代码到STM32L431CBT6微控制器。 通过以上步骤,可以使用STM32Cube配置STM32L431CBT6的低功耗模式。根据实际需求,可以选择不同的低功耗模式,并设置相应的唤醒源。这样可以有效地降低功耗,延长电池寿命。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值