写出开启RTC的代码
时间: 2023-07-03 09:11:26 浏览: 93
以下是一个示例代码,用于在STM32F4xx系列的芯片上开启RTC(实时时钟)模块:
```c
#include "stm32f4xx.h"
#include <stdio.h>
void RTC_Configuration(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_LSEConfig(RCC_LSE_ON);
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKCmd(ENABLE);
RTC_InitTypeDef RTC_InitStructure;
RTC_InitStructure.RTC_AsynchPrediv = 127;
RTC_InitStructure.RTC_SynchPrediv = 255;
RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
RTC_Init(&RTC_InitStructure);
RTC_TimeTypeDef RTC_TimeStructure;
RTC_TimeStructure.RTC_Hours = 0x0;
RTC_TimeStructure.RTC_Minutes = 0x0;
RTC_TimeStructure.RTC_Seconds = 0x0;
RTC_SetTime(RTC_Format_BIN, &RTC_TimeStructure);
}
int main(void)
{
RTC_Configuration();
while(1)
{
//do something
}
}
```
这个程序首先调用 `RTC_Configuration()` 函数来配置RTC模块。在函数中,首先使能PWR电源时钟,以便访问备份寄存器和RTC寄存器。然后开启LSE(低速外部晶体振荡器)时钟,等待其稳定后,将其作为RTC时钟源。最后,初始化RTC模块并设置初始时间为0点0分0秒。
在 `main()` 函数中,我们可以执行其他任务,同时RTC模块仍然在后台继续计时。
阅读全文