RTC的实现依赖于头文件rtc.h中的相关函数
时分秒的显示可以通过对秒数的叠加计算得到,为了便于展示,这里定义初始时间为00:00:00,使用函数MXC_RTC_GetSeconds可以读取到当前的秒数,实现代码如下
static void draw_time_hhmmss(void) { static uint32_t last_sec = 0xFFFFFFFF; // 避免重复重绘 uint32_t sec = 0; if (MXC_RTC_GetSeconds(&sec) != E_NO_ERROR) return; // 读取整秒计数 if (sec == last_sec) return; last_sec = sec; // 只取一天内的时分秒(不显示日期) uint32_t t = sec % 86400U; // 24*3600 uint32_t hh = t / 3600U; t %= 3600U; uint32_t mm = t / 60U; uint32_t ss = t % 60U; char buf[16]; // 固定 8 个字符:"HH:MM:SS" sprintf(buf, "%02lu:%02lu:%02lu", (unsigned long)hh, (unsigned long)mm, (unsigned long)ss); // 16点阵字库 const uint16_t font_h = 16; uint16_t x = 80; uint16_t y = 100; // 非叠加模式 + 黑色背景,确保每秒更新不留残影 LCD_ShowString(x, y, (uint8_t*)buf, WHITE, BLACK, font_h, 0); }
将draw_time_hhmmss()直接在主循环中调用,可以实现LCD屏幕上时间的显示
展示效果如下
工程代码如下