PN学堂GD32教程第8篇——RTC

本章代码仓库:

bash 复制代码
git clone https://gitee.com/jumayusi/unit8-gd32-rtc.git

8.1 如何实现时间戳和日历之间的转换

RTC基本硬件结构

外设结构框图,与STM32F103系列一样,GD32F303没有影子寄存器,想要实现万年历功能只能通过软件转换。

Unix时间戳

C标准库的time.h中,提供了日历时间和时间戳相互转换的相关函数:

我们主要会用第三和第四个函数。

time_t是对uint32_t的重定义,tm的定义如下:

C语言回顾:

8.2 使用指针函数的注意事项

本节课讨论的要点是如何在指针函数中返回一个有效的内存地址给其他函数去使用。

cpp 复制代码
struct tm *Test(void)
{
  return (struct tm *)malloc(sizeof(struct tm));
}
    

struct tm *timeInfo=NULL;

timeInfo=Test();
printf("address of timeInfo is 0x%p\r\n",timeInfo);

timeInfo=Test();
printf("address of timeInfo is 0x%p\r\n",timeInfo);

思考上面两次打印的结果是否一致?答案肯定是不一致的。每次调用malloc函数时,堆管理器(Heap Manager)都会从系统的动态内存堆中分配一块新的、独立的内存空间。

cpp 复制代码
    timeInfo=gmtime(&timeStamp);
    printf("address of timeInfo is 0x%p\r\n",timeInfo);

    timeInfo=gmtime(&timeStamp);
    printf("address of timeInfo is 0x%p\r\n",timeInfo);

对比gmtime函数的输出结果可知,gmtime内部使用了静态全局变量。

8.3 RTC和BKP硬件结构

相关推荐
深圳市宝华视联2 天前
Python 读取 IP 视频流简单 Demo
python·嵌入式硬件·opencv·网络协议·tcp/ip·实时音视频·嵌入式实时数据库
深圳市宝华视联2 天前
院感约束下,手术室音视频布线与设备摆放实施注意事项
嵌入式硬件·音视频·实时音视频·视频编解码·嵌入式实时数据库
调试到凌晨3 天前
2026年配音工具避坑实测:免费额度、长文本稳定性与API集成能力全记录
人工智能·经验分享·实时音视频
hz567898 天前
好视通视频会议解决方案:需求分析、平台架构与价值实现(2026 完整版)
架构·音视频·实时音视频·需求分析·信息与通信
DogDaoDao11 天前
【H266/VVC提案解读】ITU-T H.274 (V4) 规范深度解读 — 视频编码 SEI 消息的全面演进
音视频·实时音视频·视频编解码·流媒体·h266·vvc·视频编解码标准
hz5678912 天前
视频会议终端对接详解:协议兼容、系统集成与常见问题
安全·实时音视频·信息与通信
byte轻骑兵13 天前
【LE Audio】PBP精讲[3]: 公共广播角色的能力要求与执行规范
实时音视频·蓝牙耳机·le audio·蓝牙音频·低功耗音频
大模型探索者13 天前
重塑金融合规与效率:中关村科金AI+RTC智能双录系统解析
人工智能·金融·实时音视频
Multipath71214 天前
破解近海通信盲区:多链路聚合技术的安全与效率价值
网络·5g·安全·智能路由器·实时音视频
hz5678915 天前
视频会议终端品牌如何选择?主流产品特点与选型标准
安全·音视频·实时音视频·信息与通信