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屏幕上时间的显示
展示效果如下
工程代码如下
最终所有内容的汇总视频成果如下
我要赚赏金
