如何配置STM RTC时钟
时间: 2023-07-18 22:41:46 浏览: 110
配置STM32RTC时钟需要以下步骤:
1. 使能PWR和BKP外设时钟。
```
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
```
2. 解锁BKP外设,使能RTC时钟。
```
PWR_BackupAccessCmd(ENABLE);
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //配置RTC时钟源为外部低速晶振LSE
RCC_RTCCLKCmd(ENABLE);
```
3. 配置RTC预分频器,使得RTC时钟的频率为1Hz。
```
RTC_InitTypeDef RTC_InitStructure;
RTC_InitStructure.RTC_AsynchPrediv = 0x7F; //RTC异步分频器,范围为0-0x7F
RTC_InitStructure.RTC_SynchPrediv = 0xFF; //RTC同步分频器,范围为0-0x7FFF
RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;//RTC时间格式为24小时制
RTC_Init(&RTC_InitStructure);
```
4. 设置RTC时钟的初始值,即当前的时间和日期。
```
RTC_TimeTypeDef RTC_TimeStructure;
RTC_DateTypeDef RTC_DateStructure;
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure); //获取当前时间
RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); //获取当前日期
RTC_TimeStructure.RTC_Hours = hour; //设置小时
RTC_TimeStructure.RTC_Minutes = minute; //设置分钟
RTC_TimeStructure.RTC_Seconds = second; //设置秒钟
RTC_TimeStructure.RTC_H12 = RTC_H12_AM; //设置AM或PM
RTC_DateStructure.RTC_Year = year; //设置年份
RTC_DateStructure.RTC_Month = month; //设置月份
RTC_DateStructure.RTC_Date = day; //设置日期
RTC_SetTime(RTC_Format_BIN, &RTC_TimeStructure); //设置时间
RTC_SetDate(RTC_Format_BIN, &RTC_DateStructure); //设置日期
```
5. 最后,启动RTC时钟,使得RTC时钟开始计数。
```
RTC_WaitForSynchro(); //等待RTC寄存器同步
RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能RTC秒中断
RTC_RTCAlarmCmd(DISABLE); //禁用RTC闹钟
RTC_ClearFlag(RTC_FLAG_SEC); //清除RTC秒中断标志
RTC_ClearITPendingBit(RTC_IT_SEC); //清除RTC秒中断挂起标志
```
以上就是配置STM32RTC时钟的基本步骤,需要根据具体的应用进行相应的修改和调整。
阅读全文