野火stm32oled屏幕显示rtc时钟标准库程序
时间: 2023-07-29 09:10:31 浏览: 264
下面是野火STM32板子上OLED屏幕显示RTC时钟的标准库程序,你可以根据自己的需求进行修改:
```c
#include "stm32f10x.h"
#include "oled.h"
#include "rtc.h"
RTC_TimeTypeDef RTC_TimeStructure;
RTC_DateTypeDef RTC_DateStructure;
uint16_t RTC_Year = 0, RTC_Month = 0, RTC_Date = 0, RTC_WeekDay = 0;
uint8_t RTC_Hours = 0, RTC_Minutes = 0, RTC_Seconds = 0;
char time_str[20];
int main(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_LSEConfig(RCC_LSE_ON);
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_SetPrescaler(32767);
RTC_WaitForLastTask();
OLED_Init();
OLED_Clear();
OLED_ShowString(0, 0, "RTC Clock:", 16);
while (1)
{
RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure);
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);
RTC_Year = RTC_DateStructure.RTC_Year + 2000;
RTC_Month = RTC_DateStructure.RTC_Month;
RTC_Date = RTC_DateStructure.RTC_Date;
RTC_WeekDay = RTC_DateStructure.RTC_WeekDay;
RTC_Hours = RTC_TimeStructure.RTC_Hours;
RTC_Minutes = RTC_TimeStructure.RTC_Minutes;
RTC_Seconds = RTC_TimeStructure.RTC_Seconds;
sprintf(time_str, "%04d/%02d/%02d %02d:%02d:%02d", RTC_Year, RTC_Month, RTC_Date, RTC_Hours, RTC_Minutes, RTC_Seconds);
OLED_ShowString(0, 2, time_str, 16);
}
}
```
在这个程序中,我们使用了STM32F10x标准库和OLED、RTC库。程序的主要功能是在OLED屏幕上显示当前RTC时钟。在程序中,我们首先初始化RTC时钟,然后初始化OLED屏幕,并在屏幕上显示"RTC Clock:"的提示信息。接着进入一个死循环,不断读取RTC时钟信息,并将其转换为字符串格式,在OLED屏幕上显示出来。需要注意的是,我们使用了sprintf函数将时间信息转换为字符串格式,sprintf函数的使用可以参考相关文档。
阅读全文