密度是什么| 脚气泡脚用什么泡最好| 为什么医院不用咳特灵| 什么案件才会出动便衣| 什么来迟| 毛遂自荐什么意思| 轶字五行属什么| coa什么意思| 什么是led灯| 左腿麻木是什么征兆| 身上长癣是什么原因| 面瘫挂什么科| 尿酸低会引发什么症状| 巳蛇五行属什么| 玉髓是什么材质| 咽干是什么原因| 脚肿吃什么消肿最快| 梭织面料是什么面料| 黄芪什么人不能喝| 怀孕为什么不能吃韭菜| 12年一个轮回叫什么| 古来稀是什么意思| 3月份出生是什么星座| 10月份什么星座| 21三体临界风险是什么意思| 被蝎子蛰了有什么好处| 为什么养猫就没有蟑螂| 申时是什么时候| 早上起床吐痰带血是什么原因| 消化酶缺乏是什么症状| 头发干枯毛躁用什么洗发水| 惠什么意思| 傻人有傻福什么意思| 包馄饨用猪肉什么部位| 梦见自己的手机丢了是什么意思| 大腿肌肉跳动是什么原因| 什么是手机号| eos是什么| 什么降压药副作用小且效果最好| 汉字五行属什么| 百什么争什么| 守宫吃什么| 肾结石吃什么药能化石| 太阳一晒脸就红是什么原因| 三叉神经痛吃什么药效果好| 黄眉大王是什么妖怪| 恢复伤口吃什么好得快| 蟋蟀用什么唱歌| 甲申日是什么意思| 低脂高钙牛奶适合什么人群| 12月10号什么星座| 症瘕是什么意思| 挚爱和至爱有什么区别| 反目成仇是什么意思| 小哥哥是什么意思| 医院查怀孕做什么检查| 备孕是什么意思| 管科是什么专业| 鱼上浮的原因是什么| 接风是什么意思| 卵泡生成素高是什么原因| 儒家思想是什么意思| 谬论是什么意思| 跟班是什么意思| 生姜能治什么病| 人鱼线是什么| 绝育是什么意思| 21.75是什么意思| vintage是什么牌子| 经常放屁吃什么药| 怎么判断自己什么脸型| iga肾病是什么病| 眼睛模糊用什么眼药水| 胃酸吃什么可以缓解| 腿发麻是什么原因| 失眠多梦用什么药| 胃肠镜能检查出什么病| 口苦口干吃什么药好| 什么时候降温| 过火是什么意思| 双侧瞳孔缩小见于什么| 免运费是什么意思| 血糖高的人吃什么水果| 做腹部彩超挂什么科| 丹参粉有什么作用和功效| 13层楼房有什么说法吗| 为什么男怕属鸡| 嘴角长痘痘是什么原因| 锁骨上的痣代表什么| 心火吃什么药| 冰箱买什么牌子好| 阀值是什么意思| 固精是什么意思| 什么是铅| 银屑病为什么会自愈| 什么是http| 武松的性格特点是什么| 印度人属于什么人种| canyou是什么意思| 梦见爸爸去世预兆什么| 常委是什么级别| today什么意思| 有什么好吃的菜| 政协是干什么的| 八月二十是什么星座| 只出不进什么意思| 痛风喝什么水| 抱大腿什么意思| 肌肉疼是什么原因| 气管炎不能吃什么食物| 7月15日是什么星座| 真菌感染吃什么药| 甲午五行属什么| 男孩子送什么礼物| 宫颈病变是什么意思| 卫校学什么专业最好| 网红是什么意思| 七月八日是什么星座| 湿疹是什么样子| 白细胞30是什么意思| 洗冷水澡有什么好处| 尿液检查红细胞高是什么原因| 世界上最大的数是什么| 孝顺的真正含义是什么| 结婚8年是什么婚| 坐月子吃什么水果| 梦见孩子丢了是什么意思| 蓝痣有没有什么危害| 炖羊排放什么调料| 乏是什么意思| 中国一词最早出现在什么时候| 老有痰是什么原因| 吃什么食物增加黑色素| 周瑜为什么打黄盖| 两肺纹理增粗是什么意思| 脚背疼挂什么科| 车厘子是什么| 医调委是什么机构| 甲减吃什么| 格列本脲和格列美脲有什么区别| 子不教父之过是什么意思| 做梦笑出声是什么预兆| 肛肠科属于什么科| 奇葩什么意思| 心如刀割是什么意思| 桃字五行属什么| 痛风喝什么水| 酸奶不能和什么一起吃| 胃寒湿气重吃什么药效果最好| 深水炸弹是什么意思| 痢疾吃什么药效果最好| 水痘是什么病毒| 心梗吃什么药效果好| 痔疮为什么不建议手术| 龙胆泻肝丸治什么病| 猪油用什么容器装好| 皮肤发红发烫是什么原因| 77岁属什么生肖| 什么什么似火| 原配是什么意思| 摆摊卖什么好| 麒字五行属什么| 外阴瘙痒涂什么药膏| 埃及的母亲河是什么| 尿急尿频尿不尽吃什么药| 蟑螂有什么危害| 小水滴会变成什么| 七月是什么星座| 涂防晒霜之前要涂什么| 例假吃什么水果好| 老年人吃什么营养品好| 国印贵人是什么意思| 人为什么会做噩梦| 脾虚湿重吃什么中成药| 什么牌子护肤品好| 书五行属什么| 霍霍人什么意思| 湿气重吃什么蔬菜| 女为悦己者容是什么意思| 刷存在感是什么意思| 心烦意乱是什么意思| 女人肺气虚吃什么补最快| 咳嗽吃什么水果最好| 开口腔诊所需要什么条件| 聚什么会什么| 月加一笔是什么字| 永垂不朽什么意思| 口腔扁平苔藓吃什么药好得快| 脑挫伤是什么意思| 王景读什么| 降噪是什么意思| 利好是什么意思| 钾在人体中起什么作用| 复试是什么意思| 口苦是什么毛病| 腹泻恶心想吐是什么原因| 什么掌不能拍| 大便羊屎粒是什么原因| 什么的树影| 额头疼是什么原因| 什么是暗网| 可什么可什么成语| 比热容是什么| 内分泌失调吃什么调理| 杜甫自号什么| 梦到和老公吵架是什么意思| 眼前有亮光闪是什么问题| 什么是三重一大事项| 前列腺炎挂什么科| 用眼过度用什么眼药水| 吃李子不能吃什么| 龙是什么意思| 蛇五行属什么| hfp是什么意思| 世界上最多笔画的字是什么| 杂酱面用什么面| 明矾是什么东西| 自荐是什么意思| 伤口为什么会痒| 上火吃什么药| vam是什么意思| 辟谷期间可以吃什么| 打扮的意思是什么| 脖子上长痘痘什么原因| 一动就出汗吃什么药| 小孩检查微量元素挂什么科| 7月29是什么星座| 口爆什么意思| out代表什么意思| 清鼻涕是什么感冒| 五行中什么生木| 腹泻吃什么药最有效| 原字五行属什么| 高血压适合喝什么茶| 身上起痘痘是什么原因| 旮旯是什么意思| 手脚发抖是什么原因引起的| 拉稀肚子疼是什么原因| 全距是什么意思| 世界上什么最大| 总胆汁酸是什么意思| 鹿茸有什么功效| 粤语点解什么意思| 潘多拉魔盒是什么意思| 夸张是什么意思| 天蝎座与什么星座最配| 左下腹疼痛挂什么科| 心有余悸是什么意思| 未时属什么生肖| 炸酱面用的什么酱| 什么是梦想| 手胀是什么原因| 什么的星空| 胃溃疡十二指肠溃疡吃什么药| 长宽高用什么字母表示| 最好的油是什么油| 6月28日什么星座| hi是什么酸| 生肖马和什么生肖相冲| 送钱包的寓意是什么| 昱字五行属什么| egcg是什么| 阴血是什么| 鼹鼠是什么动物| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 综合技术 ? 物联网技术 ? 【MAX78000】RTC时间打印

共4条 1/1 1 跳转至

【MAX78000】RTC时间打印

工程师
2025-08-04 16:56:55     打赏
百度 东方网党委书记、董事长何继良讲话武警上海市总队副政委陈启昌讲话武警上海市总队第一支队政委杨玉明讲话双方签署共建协议签约现场东方网一行人员参观武警上海总队一支队十中队荣誉室  东方网记者魏政7月18日报道:上海东方网股份有限公司和武警上海总队一支队17日签署警企共建协议。

MAX78000有RTC来实现日期时间,这一篇将如何快速配置RTC并实现时间的打印。

1、在工程中引用rtc.h

2、MAX78000的RTC读取的是一个32位的时间戳,单位为秒,另一个寄存器为16位的时间戳但是有效时间为低12位,单位为亚秒。

读取他们值,在sdk库中已经给出了:

int MXC_RTC_GetSubSeconds(uint32_t *ssec);
int MXC_RTC_GetSeconds(uint32_t *sec);

3、在初始化中,sdk给出了初始化的函数:

/**
 * @brief     Initialize the sec and ssec registers and enable RTC (Blocking function)
 * @param     sec    set the RTC Sec counter (32-bit)
 * @param     ssec   set the RTC Sub-second counter (12-bit)
 * @retval    returns Success or Fail, see \ref MXC_ERROR_CODES
 */
int MXC_RTC_Init(uint32_t sec, uint16_t ssec);

【注】在此篇中,我们不需要读取亚秒,因此只需要传入32位的时间戳即可。

【辅助函数】

为了转化时间戳,我添加了如下函数:

#define MSEC_TO_RSSA(x) \
    (0 - ((x * 4096) /  \
          1000)) /* Converts a time in milleseconds to the equivalent RSSA register value. */

#define SECS_PER_MIN 60
#define SECS_PER_HR (60 * SECS_PER_MIN)
#define SECS_PER_DAY (24 * SECS_PER_HR)


TaskHandle_t xTask1Handle = NULL;
extern BloodData g_blooddata ;
/* 任务函数声明 */
void vTask1(void *pvParameters);

// 判断是否为闰年
int isLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 获取指定年份中每个月的天数
void getDaysInMonth(int year, int daysInMonth[]) {
    daysInMonth[0] = 0;  // 不使用索引0
    daysInMonth[1] = 31;
    daysInMonth[2] = isLeapYear(year) ? 29 : 28;  // 闰年2月29天
    daysInMonth[3] = 31;
    daysInMonth[4] = 30;
    daysInMonth[5] = 31;
    daysInMonth[6] = 30;
    daysInMonth[7] = 31;
    daysInMonth[8] = 31;
    daysInMonth[9] = 30;
    daysInMonth[10] = 31;
    daysInMonth[11] = 30;
    daysInMonth[12] = 31;
}

// 将从2025-08-04起的时间戳转换为日期时间
void timestampToDateTime(long timestamp, int *year, int *month, int *day, int *hour, int *minute, int *second) {
    long sec = timestamp;

    // 计算时、分、秒(已有代码)
    // 计算天数(从2025-08-04起)
    long dayCount = sec / SECS_PER_DAY;
    sec -= dayCount * SECS_PER_DAY;  // 剩余秒数用于计算时、分、秒

    // 计算时、分、秒
    *hour = sec / SECS_PER_HR;
    sec -= *hour * SECS_PER_HR;

    *minute = sec / SECS_PER_MIN;
    sec -= *minute * SECS_PER_MIN;

    *second = sec;

    // 计算天数(从2025-08-04起)


    // 计算年份
    *year = 2000;
    while (1) {
        int daysInYear = isLeapYear(*year) ? 366 : 365;
        if (dayCount < daysInYear) break;
        dayCount -= daysInYear;
        (*year)++;
    }

    // 计算月份和日期
    int daysInMonth[13];
    getDaysInMonth(*year, daysInMonth);

    *month = 1;
    while (*month <= 12) {
        if (dayCount < daysInMonth[*month]) break;
        dayCount -= daysInMonth[*month];
        (*month)++;
    }

    *day = (int)dayCount + 1;  // +1是因为天数从0开始计数,而日期从1开始
}
// 计算从2025-08-04起的天数
int daysSince2000(int year, int month, int day) {
    int days = 0;
    int i;

    // 计算完整年份的天数
    for (i = 2000; i < year; i++) {
        days += isLeapYear(i) ? 366 : 365;
    }

    // 计算当年到目标月份的天数
    int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (isLeapYear(year)) {
        daysInMonth[2] = 29;  // 闰年2月29天
    }

    for (i = 1; i < month; i++) {
        days += daysInMonth[i];
    }

    // 加上当月的天数
    days += day;

    return days;
}

void printTime(void)
{
	int year, month, day, hour, minute, second,err;
    uint32_t rtc_readout;

//    do {
//        err = MXC_RTC_GetSubSeconds(&rtc_readout);
//    } while (err != E_NO_ERROR);
//    subsec = rtc_readout / 4096.0;

    do {
        err = MXC_RTC_GetSeconds(&rtc_readout);
    } while (err != E_NO_ERROR);

    // 转换时间戳为日期时间
        timestampToDateTime(rtc_readout, &year, &month, &day, &hour, &minute, &second);

        printf("timestamp %ld datetime: %04d-%02d-%02d %02d:%02d:%02d\n",
        		rtc_readout, year, month, day, hour, minute, second);
}

以上辅助函数功能为由给出的年月日函数转化为时间戳,或者是读出的时间戳转化为时间。

【测试】

在初始化中,给出初始的时间,然后转化为时间戳,通过rtcinit写入RTC寄存器,然后在任务函数中读取并通过串口输出:

	    int year = 2025;
	    int month = 6;
	    int day = 27;
	    int hour = 16;
	    int minute = 7;
	    int second = 0;

	    // 计算从2025-08-04起的总秒数
	    int totalDays = daysSince2000(year, month, day);
	    long timestamp = (long)totalDays * SECS_PER_DAY +
	                    hour * SECS_PER_HR +
	                    minute * SECS_PER_MIN +
	                    second;

	    printf("从2025-08-0400:00:00到%04d-%02d-%02d %02d:%02d:%02d的时间戳为: %ld\n",
	           year, month, day, hour, minute, second, timestamp);

	if (MXC_RTC_Init(timestamp, 0) != E_NO_ERROR) {
	        printf("Failed RTC Initialization\n");
	        printf("Example Failed\n");

	        while (1) {}
	    }
	if (MXC_RTC_Start() != E_NO_ERROR) {
	        printf("Failed RTC_Start\n");
	        printf("Example Failed\n");

	        while (1) {}
	    }

	    printf("RTC started\n");

打印时间:

image.png

实现效果:

image.png

【总结】

在MAX78000的sdk中给出了RTC封装好的函数,非常简单的就可以实现RTC的功能,当然如果想实现中断,还需要一简单的配置,大家可以创建一个RTC的示例,在示例中有详细的说明。




关键词: MAX78000     RTC    

专家
2025-08-04 14:53:44     打赏
2楼

感谢分享


专家
2025-08-04 14:55:00     打赏
3楼

感谢分享


专家
2025-08-04 14:56:19     打赏
4楼

感谢分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
爱发朋友圈的女人是什么心态 童五行属什么 诸事皆宜是什么意思 敦促的意思是什么 胃炎吃什么最好
v店是什么 甲级战犯是什么意思 脑梗有什么前兆 鸡肉和什么相克 梦见打死猫有什么预兆
质询是什么意思 两榜进士是什么意思 72年鼠是什么命 嘴苦是什么原因 为什么会得湿疹
包皮红肿瘙痒用什么药 什么叫意象 统招是什么意思 肛检是检查什么 倍他乐克是什么药
光天化日什么意思hcv8jop7ns0r.cn 人什么地灵hcv8jop3ns4r.cn 带状疱疹是什么样的hcv8jop6ns7r.cn 什么是基因hcv8jop8ns1r.cn 吃了西瓜不能吃什么hcv9jop2ns0r.cn
女朋友生日送什么hcv8jop8ns4r.cn 小孩子打呼噜是什么原因hcv9jop3ns9r.cn 海肠是什么动物huizhijixie.com 卡西欧手表什么档次wuhaiwuya.com 锐字五行属什么hcv9jop7ns2r.cn
wedding什么意思hcv8jop1ns8r.cn 金戊念什么hcv7jop9ns8r.cn 减肥吃什么好0297y7.com 新生儿黄疸是什么原因引起的huizhijixie.com hov是什么意思hcv8jop9ns9r.cn
烙馍卷菜搭配什么菜hcv7jop6ns9r.cn xo兑什么饮料好喝hcv9jop6ns9r.cn 肾结石什么不能吃wmyky.com 速度是70迈心情是自由自在什么歌hcv8jop7ns0r.cn psg是什么意思hcv9jop3ns7r.cn
百度