一旦RTC时钟初始化完成,你可以设置RTC的当前时间和日期。这可以通过编写代码来设置RTC寄存器来完成。下面是一个设置RTC时间和日期的简单示例代码:
c
#include "stm32l0xx.h"
void Set_RTC_Time(uint8_t hour, uint8_t minute, uint8_t second) {
// 等待RTC寄存器同步
while ((RTC->ISR & RTC_ISR_INITF) == 0);
// 设置小时、分钟和秒
RTC->TR = (hour << RTC_TR_HT_Pos) | (minute << RTC_TR_MNT_Pos) | (second << RTC_TR_ST_Pos);
// 退出RTC初始化模式
RTC->ISR &= ~RTC_ISR_INIT;
}
void Set_RTC_Date(uint8_t year, uint8_t month, uint8_t day) {
// 等待RTC寄存器同步
while ((RTC->ISR & RTC_ISR_INITF) == 0);
// 设置年、月和日
RTC->DR = (year << RTC_DR_YT_Pos) | (month << RTC_DR_MT_Pos) | (day << RTC_DR_DT_Pos);
// 退出RTC初始化模式
RTC->ISR &= ~RTC_ISR_INIT;
}
int main(void) {
// 初始化RTC时钟
RTC_Init();
// 设置当前时间为12:34:56
Set_RTC_Time(12, 34, 56);
// 设置当前日期为2024年5月31日
Set_RTC_Date(24, 5, 31);
while (1) {
// 循环执行其他任务
}
}
|