hal 外部唤醒脚唤醒_STM32L0 进入STOP模式后串口中断方式唤醒

本文介绍了如何使用STM32L0单片机在完成一定采样任务后进入STOP模式,通过串口中断进行唤醒。详细阐述了定时休眠唤醒和串口中断唤醒的实现方法,包括RTC设置、串口配置和中断处理。同时指出使用内部时钟LSI的局限性,以及如何调整唤醒时间。
摘要由CSDN通过智能技术生成

实现功能:单片机以一定的采样频率(如2Khz)进行采样,例如每分钟(60s)只采前30s,后30s休眠(定时休眠唤醒),等到下一分钟再自动wakeup,如此循环30分钟。30分钟之后,单片机进入休眠stop模式。用串口中断的方式将休眠的单片机唤醒。

实现方法:

1、定时休眠唤醒code

HAL_Delay(2000);//进行采样的时间

HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle);

HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle, 2, RTC_WAKEUPCLOCK_RTCCLK_DIV16);

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);//调用库函数进入STOP模式

SystemClockConfig_STOP();//停机模式后唤醒,恢复时钟源

count1++;

while(count1==1)//循环的次数

{

Rx_Init();

count1=0;

flag3=0;

__HAL_RTC_ALARM_DISABLE_IT(&RTCHandle, RTC_IT_ALRA);

__HAL_RTC_ALARM_CLEAR_FLAG(&RTCHandle, RTC_IT_ALRA);

HAL_TIM_Base_Stop(&TimHandle);   //定时器停止

HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle);

HAL_PWR_EnterSTOPMode(PWR_L

STM32L051是意法半导体(STMicroelectronics)推出的一款低功耗微控制器。其中,HAL是指使用STM32Cube库中的硬件抽象层(Hardware Abstraction Layer)行开发的一种方法。 在STM32L051中,串口唤醒Stop模式是一种低功耗的工作模式。通过使用串口行通信,我们可以实现当系统处于低功耗Stop模式时,仍然能够接收串口数据并唤醒系统。 使用HAL库的串口唤醒Stop模式的步骤如下: 1. 初始化串口:在代码中,我们首先需要使用HAL库对串口行初始化,设置波特率、数据位、停止位、奇偶校验等参数。 2. 配置串口唤醒模式:在初始化串口后,我们可以设置串口的唤醒模式。在HAL库中,通过调用相关函数,可以实现在进入低功耗Stop模式后,如果有串口数据接收,可以自动唤醒系统。 3. 配置低功耗模式:在配置完串口唤醒模式后,我们还需要配置低功耗模式。在HAL库中,通过调用相关函数,可以选择进入Stop模式,并设置唤醒源为串口。 4. 进入低功耗Stop模式:在配置完低功耗模式后,通过调用相关函数,可以使系统进入低功耗Stop模式。此时,系统会进入睡眠状态,只有当有串口数据到达时,才能够自动唤醒系统。 5. 处理唤醒事件:当系统被唤醒后,可以通过中断或轮询的方式,对串口接收到的数据行处理。 综上所述,使用STM32L051 HAL库的串口唤醒Stop模式可以实现在低功耗模式下仍然能够接收串口数据并唤醒系统。通过合理配置相关参数,我们可以实现低功耗要求并满足实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值