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

相关推荐
ZEGO即构16 小时前
AI教育重构教与学:RTC+AI如何赋能全学段教学场景?
人工智能·实时音视频·ai教育
metaRTC17 小时前
metaRTC8 成功适配 RTOS:开启 MCU/嵌入式实时音视频新时代
单片机·嵌入式硬件·webrtc·实时音视频·rtos
byte轻骑兵3 天前
【LE Audio】BASS精讲[3]: 从服务声明到行为逻辑 解锁广播音频接收核心
音视频·实时音视频·le audio·低功耗音频·蓝牙通话
危桥带雨5 天前
RTC理论知识
stm32·单片机·嵌入式硬件·实时音视频
rit84324995 天前
基于STM32的RTC(实时时钟)程序设计与实现
stm32·嵌入式硬件·实时音视频
nibabaoo9 天前
前端开发攻略---H5页面手机获取摄像头权限回显出画面并且同步到PC页面
javascript·websocket·实时音视频·实时同步·录制
拉拉尼亚12 天前
WebRTC 完全指南:原理、教程与应用场景
前端·typescript·实时音视频
王家视频教程图书馆15 天前
另外还有一个小问题,就是两个部手机进行测试的时候,进行外部 RTC 通话的时候。我使用 QQ 音乐播放背景音乐,但是背景音乐没有加上。有冲突
实时音视频
海水冷却19 天前
2026年实时音视频服务计费模式指南
实时音视频