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

相关推荐
u1521096484914 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
国产化创客14 天前
ESP32 CameraWebServer 原生摄像头项目全解析
物联网·开源·嵌入式·实时音视频·智能硬件
u1521096484914 天前
S.S.Audio PRO A202 音频隔离器
音视频·实时音视频·视频编解码·视频·被复线
hz5678914 天前
基于音视频 PaaS 的实时音视频解决方案:技术架构与落地实践
安全·架构·音视频·实时音视频·信息与通信·paas
DogDaoDao16 天前
AV1 解码器核心:decodeframe.c文件深度剖析
音视频·实时音视频·视频编解码·av1·解码器·decode·vp9
做萤石二次开发的哈哈18 天前
AI 陪护机器人硬件如何接入萤石ERTC 实现实时通话?
人工智能·音视频·实时音视频·萤石开放平台
Multipath71218 天前
急救车上的“信号堡垒”:多链路聚合路由如何让生命连线永不掉线
网络·5g·安全·实时音视频
Zyed18 天前
[STM32]Day12读写备份寄存器+RTC
stm32·单片机·实时音视频
hz5678919 天前
国产化视频会议系统怎么做?鲲鹏+麒麟+国密的完整国产化路径
音视频·实时音视频·信息与通信
weixin_4083180420 天前
医疗器械企业学术营销直播指南:设备演示+手术示教+线上培训三场景实战方案
实时音视频