最近在进行一个实验项目,使用的是stm32L051k8,是8KRAM,64KFLASH,需要使用到RTC闹钟。同时使用的是LL库,但是发现RTC的闹钟根本无法启动。在此贴出RTC部分代码。希望使用过STM32L0系列闹钟的坛友们帮忙看看。 RTC_AlarmStruct.AlarmTime.TimeFormat = LL_RTC_HOURFORMAT_24HOUR; RTC_AlarmStruct.AlarmTime.Hours = Hours; RTC_AlarmStruct.AlarmTime.Minutes = Minutes; RTC_AlarmStruct.AlarmTime.Seconds = Seconds; RTC_AlarmStruct.AlarmMask = LL_RTC_ALMB_MASK_DATEWEEKDAY ; //精确匹配星期,时分秒 RTC_AlarmStruct.AlarmDateWeekDaySel = LL_RTC_ALMB_DATEWEEKDAYSEL_DATE; //按星期闹 RTC_AlarmStruct.AlarmDateWeekDay = WeekDay; LL_RTC_ALMB_Init(RTC, LL_RTC_FORMAT_BIN, &RTC_AlarmStruct); LL_RTC_ClearFlag_ALRB(RTC); LL_RTC_ALMB_Enable(RTC); LL_RTC_EnableIT_ALRB(RTC); NVIC_EnableIRQ(RTC_IRQn); //使能RTC中断 NVIC_SetPriority(RTC_IRQn, 3); |
闹钟设定寄存器
闹钟CR寄存器无法写入,导致无法开启闹钟
像类似问题,请给出STM32CubeMX、HAL的版本信息、工程文件,否则无法给你测试。你贴出的代码没有问题,可能会有问题的却没有交代。
请使用STM32CubeMX、HAL和LL库最新版本。
HAL都可能有BUG,LL更库容易有BUG,ST有时会不声不响的把BUG修复,版本更新。不要问我是怎么知道的,满满都是累。
评分
查看全部评分
stm32L0xx LL库RTC闹钟
问题已解决:
首先想办法解决了无法开启RTC闹钟事件的问题:
1、在进行闹钟的开启和关闭的时候必须要首先禁用RTC的写保护;
LL_RTC_DisableWriteProtection(RTC);
RTC的闹钟事件就正常了,而且能够正常触发,但是问题来了,事件触发了,但是根本就无法进入中断,这个时候就需要修改两个地方,通过查询寄存器手册得知,RTC的闹钟是映射到了外部中断线,所以需要使用RTC闹钟的中断,就需要开启相应的外部中断:然后添加了两行代码: LL_EXTI_EnableIT_0_31(LL_EXTI_LINE_17);
LL_EXTI_EnableRisingTrig_0_31(LL_EXTI_LINE_17);
,再次贴出关键代码: