专栏名称: 面包板社区
面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
目录
相关文章推荐
新疆949交通广播  ·  已明确,禁止安装! ·  昨天  
新疆949交通广播  ·  乌鲁木齐将新建(改扩建)续建11所中小学 ·  昨天  
新疆949交通广播  ·  免费开放! ·  2 天前  
新疆949交通广播  ·  2月11日 12日 ... ·  2 天前  
新疆949交通广播  ·  注意!新疆部分旅客列车停运 ·  3 天前  
51好读  ›  专栏  ›  面包板社区

实现一个丝滑OLED日历时钟

面包板社区  · 公众号  ·  · 2024-05-03 17:37

正文

本文来自面包板社区《灵动 Mini-F5333开发板》免费测评活动。

【硬件】
Mini-F5330开发板
OLED显示屏
【实验步聚】
1. 复制OLED显示工程,重命为RTC_clock。
2. 复制一份官方例程RTC_Calendar中的rt_calendar.c/h到新工程的RTC文件夹下。
3. 把rt_calendar.c添加到工程中的RTC分组中,并把头文件添另进工程。

4. 根据编译的提示,添加hal_rtc、hal_bkp、hal_pwr、hal_misc等必需的驱动库。 在mm32f5330_it.c中添加rtc的中断函数:
/*********************************************************************************************************************** * @brief This function handles RTC Handler * @note none * @param none * @retval none *********************************************************************************************************************/void RTC_IRQHandler(void){ if (RESET != RTC_GetITStatus(RTC_IT_SEC)) { RTC_UpdateCalendar(); RTC_PrintDateTime(); RTC_ClearITPendingBit(RTC_IT_SEC); RTC_WaitForLastTask(); }}
下载好程序后,我们在开发板上看到了串口打印出来的日期时间:
5. 在main.c中,我们添加显示时间的函数代码如下:
#include "platform.h"#include "main.h"#include "oled.h"#include "rtc_calendar.h"#include "string.h"#include extern uint8_t rtc_state;extern RTC_CalendarTypeDef RTC_Calendar;char data_buff[] = "2024-01-07";char time_buff[] = "01:01:01"; int main(void){ PLATFORM_Init(); RTC_Configure(); OLED_Init(); OLED_ShowStr(10,0,"MM32F5330!",2); OLED_RefreshRAM();
while (1) { if(rtc_state == 1) { rtc_state = 0; sprintf(data_buff,"%04d-%02d-%02d",RTC_Calendar.year,RTC_Calendar.month, RTC_Calendar.day); sprintf(time_buff,"%02d:%02d:%02d", RTC_Calendar.hour, RTC_Calendar.minute, RTC_Calendar.second); OLED_ShowStr(10,16,data_buff,2); OLED_ShowStr(10,32,time_buff,2); OLED_RefreshRAM(); PLATFORM_LED_Toggle(LED1); }
}}
下载好程序后就可以看到时间可以动态显示了:
【添回动态显示时间】
添加动态显示的时钟draw_rolling_clock.c到工程中,并把头文件添加进工程,在主函数中,我们添加代码如下:
#define _MAIN_C_/* Files include */#include "platform.h"#include "main.h"#include "oled.h"#include "rtc_calendar.h"#include "string.h"#include extern uint8_t rtc_state;extern RTC_CalendarTypeDef RTC_Calendar;char data_buff[] = "2024-01-07";char time_buff[] = "01:01:01"; extern uint8_t H1,H2,M1,M2,S1,S2;int






请到「今天看啥」查看全文


推荐文章
新疆949交通广播  ·  已明确,禁止安装!
昨天
新疆949交通广播  ·  乌鲁木齐将新建(改扩建)续建11所中小学
昨天
新疆949交通广播  ·  免费开放!
2 天前
新疆949交通广播  ·  注意!新疆部分旅客列车停运
3 天前
考研研学姐  ·  盘点跨专业考研的七大最热门专业
8 年前
最搞笑笑话王  ·  1个未接来电
7 年前