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硬件结构

相关推荐
hz5678910 小时前
公安局远程办案用什么音视频系统?安全取证与多方协同方案
安全·架构·云计算·音视频·实时音视频·信息与通信
hz5678915 小时前
医院LIS系统如何对接视频会议系统?远程诊疗协同方案详解
音视频·实时音视频·信息与通信
Multipath7121 天前
无人区不掉线:多链路聚合路由,为环塔拉力赛筑起“空中通讯走廊”
网络·5g·安全·无人机·实时音视频
hz567892 天前
实时音视频SDK发展趋势:TRTC、WebRTC与云端音视频服务融合路径
架构·音视频·webrtc·实时音视频
byte轻骑兵3 天前
【LE Audio】CAP精讲[15]: 音频城堡的安保体系,全流程安全防护与权限管控
音视频·实时音视频·le audio·蓝牙音频·低功耗音频
做萤石二次开发的哈哈4 天前
具备 ERTC 能力的萤石设备如何对接客户端通话?
音视频·实时音视频·萤石开放平台
YWamy6 天前
2026 国内主流 RTC 音视频 SDK 技术实测与选型参考指南
音视频·实时音视频
深圳元器猫6 天前
国网电表专用原厂正料|EPSON RX-8025T高稳定RTC,保障电力计量精准可靠
实时音视频
美狐美颜SDK开放平台7 天前
直播软件开发+AI美颜SDK:下一代直播平台搭建方案
大数据·人工智能·实时音视频·美颜sdk·第三方美颜sdk
hz567898 天前
实时音视频SDK选型指南:TRTC、WebRTC与音视频PaaS能力对比
安全·音视频·webrtc·实时音视频·信息与通信·paas