你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

RTC的问题

[复制链接]
13066660108 提问时间:2024-5-9 10:36 / 未解决

STM32L051C8T6

参考手册描述

To wake up from the Stop mode with an RTC Wakeup event, it is necessary to: a) Configure the EXTI Line 20 to be sensitive to rising edges (Interrupt or Event modes) b) Enable the RTC Wakeup Interrupt in the RTC_CR register c) Configure the RTC to generate the RTC Wakeup event

a

EXTI->EMR |= EXTI_IMR_IM20;

EXTI->RTSR |= EXTI_IMR_IM20;

b

RTC->CR = RTC_CR_WUTE | RTC_CR_WUTIE;

c 怎么做呢?

收藏 评论5 发布时间:2024-5-9 10:36

举报

5个回答
butterflyspring 回答时间:2024-5-9 11:39:16
这个本质上就是一个计数器中断,在手册上有描述。可以参考cubemx 上的配置和代码

STM32L0 WAKUP CONTER 1.PNG STM32L0 WAKUP CONTER 2.PNG
xmshao 回答时间:2024-5-9 13:10:26
步骤C应该就是启动唤醒定时器。然后基于设置的唤醒时间产生唤醒事件及中断。


下面代码供参考:


RTC->WPR = 0xCA;
RTC->WPR = 0x53;
RTC->CR &=~ RTC_CR_WUTE;
while((RTC->ISR & RTC_ISR_WUTWF) != RTC_ISR_WUTWF)
{
//....
}
RTC->WUTR = 0x9C0;
RTC->CR = RTC_CR_WUTE | RTC_CR_WUTIE;


RTC->WPR = 0xFE;
RTC->WPR = 0x64;
13066660108 回答时间:2024-5-9 16:53:49

butterflyspring 发表于 2024-5-9 11:39
这个本质上就是一个计数器中断,在手册上有描述。可以参考cubemx 上的配置和代码</p>
<p>

WUTF必须是程序清除的。

我的主程序

while(1)

{

if(LL_RTC_IsActiveFlag_WUT(RTC))

{ LL_RTC_ClearFlag_WUT(RTC);

//LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_4);

}

}

中断程序

void RTC_IRQHandler(void)

{

/ USER CODE BEGIN RTC_IRQn 0 /

if(LL_RTC_IsActiveFlag_WUT(RTC))

{

LL_RTC_ClearFlag_WUT(RTC);

LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_4);

}

LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_20);

}

当主程序中有LL_RTC_ClearFlag_WUT(RTC);这个的时候,是可以进入中断程序的,而没有这句时,就不能进入中断程序。

不知道这是为什么?

theIn 回答时间:2024-5-9 17:39:20

13066660108 发表于 2024-5-9 16:53</p>
<p>WUTF必须是程序清除的。</p>
<p>

[md]意法半导体一级经销商,价格优惠,全新原装 意法半导体MCU微信:the1isIn

butterflyspring 回答时间:2024-5-11 16:22:13
手册上在寄存器描述处有提到,推测是电路特点。
估计如果首次的标志没清除掉,再发生时不会产生中断。

stm32l051 rtc wutf.PNG

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版