TA的每日心情 | 擦汗 2019-6-26 20:59 |
---|
签到天数: 235 天 连续签到: 1 天 [LV.7]常住居民III
|
本帖最后由 小马哥-1650185 于 2018-6-16 17:33 编辑
先来看下效果图吧
本帖子主要是在前面lcd驱动显示的基础上啊增加了RTC实时时钟功能,并通过lcd显示出来,同事串口是每秒打印一次时间。
SNVS 是 DCP 模块的配套模块。 SNVS 包含安全和非安全功能。 本文档中描述了 SNVS非安全功能,但仅在《Security Reference Manual》中描述了 SNVS 安全功能。
SNVS 实现了几个涉及软件交互的非安全功能:
1. 读取或写入实时计数器(RTC)(这是非特权操作) - 软件还可以指示 SNVS 将当前的 SRTC 值加载到 RTC;
2. 读写通用寄存器(GPR)(如果 LP 时钟与 HP 时钟不同,则在 LP 部分读或写寄存器时可能会有明显延迟)。
特性:
RTC,软件可配置的实时时钟模块;
周期中断,软件可配置中断间隔时间;
通用存储器,用于存储 128 bits 的数据,如果 SNVS_LP 电源输入连接到不间断电源,例如纽扣电池,当主 SoC 断电时, GPR 值保持不变;
芯片开机/关机,如果 SNVS_LP 电源输入连接到不间断电源,同时开机按钮输入信号连接到一个芯片外部的电源按钮, SNVS_LP 内部的逻辑可以用来唤醒芯片从掉电。
RTC 配置步骤:
使能时钟;
配置 RTC 校准值和周期中断间隔;
设置年月日, 启动计数器;
设置闹钟时间;
使能 RTC 闹钟中断。
获取 SNVS 默认配置信息结构体参数并利用该结构体初始化 SNVS*
- <div> SNVS_HP_RTC_GetDefaultConfig(&snvsRtcConfig);</div><div> SNVS_HP_RTC_Init(SNVS, &snvsRtcConfig);</div>
复制代码
配置 RTC 数据结构体参数
- rtcDate.year = 2018U;
- rtcDate.month = 06U;
- rtcDate.day = 16U;
- rtcDate.hour = 17U;
- rtcDate.minute = 0;
- rtcDate.second = 0;
复制代码 将RTC时间设置为默认时间和日期并启动RTC
- SNVS_HP_RTC_SetDatetime(SNVS, &rtcDate);
- SNVS_HP_RTC_StartTimer(SNVS);
复制代码
在循环中获取当前时间,一秒刷新一次lcd显示,1秒通过串口打印一次时间。
- while(1)
- {
-
- /* 获取日期 */
- SNVS_HP_RTC_GetDatetime(SNVS, &rtcDate0);
- if(rtcDate0.second != old_second)
- {
-
- /*使用c标准库把变量转化成字符串*/
- sprintf(buf,"%04hd-%02hd-%02hd %02hd:%02hd:%02hd ", rtcDate0.year, rtcDate0.month, rtcDate0.day,
- rtcDate0.hour, rtcDate0.minute, rtcDate0.second);
-
- /*然后显示该字符串即可,其它变量也是这样处理*/
- LCD_DispString(100,200,(uint8_t* )buf);
- // LCD_DisplayStringLine(LINE(5),(uint8_t* )buf);
-
-
- /* 打印默认时间 */
- PRINTF("当前时间: %04hd-%02hd-%02hd %02hd:%02hd:%02hd\r\n", rtcDate0.year, rtcDate0.month, rtcDate0.day,
- rtcDate0.hour, rtcDate0.minute, rtcDate0.second);
-
- old_second = rtcDate0.second;
- }
- }
复制代码 串口打印为
|
|