当前位置: 首页 > wzjs >正文

网站开发手机端河北省建设厅注册中心网站

网站开发手机端,河北省建设厅注册中心网站,企业邮箱注册申请阿里云,做创意礼品的网站文章目录 一.概要二.RTC基本特点三.GD32单片机RTC内部结构图四.配置一个RTC走秒例程五.工程源代码下载六.小结 一.概要 RTC(Real-Time Clock)是一种用于追踪和记录实际时间的时钟系统。RTC模块提供了一个包含日期(年/月/日)和时间…

文章目录

    • 一.概要
    • 二.RTC基本特点
    • 三.GD32单片机RTC内部结构图
    • 四.配置一个RTC走秒例程
    • 五.工程源代码下载
    • 六.小结

一.概要

RTC(Real-Time Clock)是一种用于追踪和记录实际时间的时钟系统。RTC模块提供了一个包含日期(年/月/日)和时间(时/分/秒/亚秒)的日历功能。除亚秒用二进制码显示外,时间和日期都以BCD码的形式显示。RTC可以进行夏令时补偿。RTC可以工作在省电模式下,并通过软件配置来智能唤醒。RTC支持外接更高精度的低频时钟,用以达到更高的日历精度。

本文介绍了GD32 RTC实时时钟的基本概念,内部结构,以及用内部RTC进行时间计时的例程。

二.RTC基本特点

1.通过软件设置来实现夏令时补偿
2.参考时钟检测功能:通过外接更高精度的低频率时钟源(50Hz或60Hz)来提高日历精度
3.数字校准功能:通过调整最小时间单位(最大可调精度0.95ppm)来进行日历校准
4.通过移位功能进行亚秒级调整
5.记录事件时间的时间戳功能
6.两个模式可配置的独立的侵入检测
7.可编程的日历和两个位域可屏蔽的闹钟
8.可屏蔽的中断源: 闹钟0和闹钟1,时间戳检测,侵入检测,自动唤醒事件
9.20个32位(共80字节)通用备份寄存器,能够在省电模式下保存数据。当有外部事件侵入时,备份寄存器将会复位

三.GD32单片机RTC内部结构图

RTC内部结构图如下

在这里插入图片描述
RTC单元有三个可选的独立时钟源:LXTAL、IRC32K和HXTAL的2-31(由RCU_CFG寄存器配置)分频后的时钟。
ck_spre用于为日历寄存器提供时钟,每个时钟增加一秒。
异步预分频器(Asynchronous Prescaler):将输入时钟分频为中间频率(如从32.768 kHz分频至1 kHz)。异步分频器主要用来降低功率消耗。
同步预分频器(Synchronous Prescaler):进一步分频中间频率至1 Hz信号,驱动计数器。
可编程闹钟:通过比较器匹配计数器值,触发中断或唤醒事件。

四.配置一个RTC走秒例程

STLINK接GD32F407VET6开发板,STLINK接电脑USB口。

在这里插入图片描述

主要代码

#define RTC_CLOCK_SOURCE_LXTAL //配置时钟源为外部32.768K晶振/*!\brief    get current time and date\param[in]  none\param[out] rtc_initpara_struct: pointer to a rtc_parameter_struct structure which contains parameters for initialization of the rtc peripheralmembers of the structure and the member values are shown as below:year: 0x0 - 0x99(BCD format)month: RTC_JAN, RTC_FEB, RTC_MAR, RTC_APR, RTC_MAY, RTC_JUN,RTC_JUL, RTC_AUG, RTC_SEP, RTC_OCT, RTC_NOV, RTC_DECdate: 0x1 - 0x31(BCD format)day_of_week: RTC_MONDAY, RTC_TUESDAY, RTC_WEDSDAY, RTC_THURSDAYRTC_FRIDAY, RTC_SATURDAY, RTC_SUNDAYhour: 0x0 - 0x12(BCD format) or 0x0 - 0x23(BCD format) depending on the rtc_display_format choseminute: 0x0 - 0x59(BCD format)second: 0x0 - 0x59(BCD format)factor_asyn: 0x0 - 0x7Ffactor_syn: 0x0 - 0x7FFFam_pm: RTC_AM, RTC_PMdisplay_format: RTC_24HOUR, RTC_12HOUR\retval     none
*/
void rtc_current_time_get(rtc_parameter_struct* rtc_initpara_struct)
{uint32_t temp_tr = 0U, temp_dr = 0U, temp_pscr = 0U, temp_ctlr = 0U;temp_tr = (uint32_t)RTC_TIME;   temp_dr = (uint32_t)RTC_DATE;temp_pscr = (uint32_t)RTC_PSC;temp_ctlr = (uint32_t)RTC_CTL;/* get current time and construct rtc_parameter_struct structure */rtc_initpara_struct->year = (uint8_t)GET_DATE_YR(temp_dr);rtc_initpara_struct->month = (uint8_t)GET_DATE_MON(temp_dr);rtc_initpara_struct->date = (uint8_t)GET_DATE_DAY(temp_dr);rtc_initpara_struct->day_of_week = (uint8_t)GET_DATE_DOW(temp_dr);  rtc_initpara_struct->hour = (uint8_t)GET_TIME_HR(temp_tr);rtc_initpara_struct->minute = (uint8_t)GET_TIME_MN(temp_tr);rtc_initpara_struct->second = (uint8_t)GET_TIME_SC(temp_tr);rtc_initpara_struct->factor_asyn = (uint16_t)GET_PSC_FACTOR_A(temp_pscr);rtc_initpara_struct->factor_syn = (uint16_t)GET_PSC_FACTOR_S(temp_pscr);rtc_initpara_struct->am_pm = (uint32_t)(temp_pscr & RTC_TIME_PM); rtc_initpara_struct->display_format = (uint32_t)(temp_ctlr & RTC_CTL_CS);
}
void rtc_show_time(void)
{rtc_current_time_get(&rtc_initpara);  
}
//初始化时间设置
void rtc_setup(void)
{/* setup RTC time value */uint32_t tmp_hh = 0xFF, tmp_mm = 0xFF, tmp_ss = 0xFF;rtc_initpara.factor_asyn = prescaler_a;rtc_initpara.factor_syn = prescaler_s;rtc_initpara.year = 0x16;//设置初始化时间:年rtc_initpara.day_of_week = RTC_SATURDAY;rtc_initpara.month = RTC_APR;//设置初始化时间:月rtc_initpara.date = 0x30;//设置初始化时间:日rtc_initpara.display_format = RTC_24HOUR;rtc_initpara.am_pm = RTC_AM;rtc_initpara.hour = 00; //设置初始化时间:时  rtc_initpara.minute = 00;//设置初始化时间:分rtc_initpara.second = 00;//设置初始化时间:秒/* RTC current time configuration */if(ERROR == rtc_init(&rtc_initpara)){    }else{rtc_show_time();RTC_BKP0 = BKP_VALUE;}
}
uint8_t aShowTime[16] = "hh:ms:ss";//定义时分秒
uint8_t aShowDate[16] = "dd-mm-yyyy";//定义年月日
int main(void)
{systick_config();//配置系统主频168M,外部8M晶振,配置在#define __SYSTEM_CLOCK_168M_PLL_8M_HXTAL        (uint32_t)(168000000)/* enable PMU clock */rcu_periph_clock_enable(RCU_PMU);/* enable the access of the RTC registers */pmu_backup_write_enable();rtc_pre_config();//配置RTCrtc_setup(); //设置时间2016年4月30日,0点0分0秒while(1){delay_1ms(500);//500ms等待rtc_show_time();//读取时间sprintf((char *)aShowTime, "%2x:%2x:%2x", rtc_initpara.hour, rtc_initpara.minute, rtc_initpara.second);sprintf((char *)aShowDate, "%2x-%2x-%2x", rtc_initpara.month, rtc_initpara.date, 0x2000 + rtc_initpara.year);}
}

实验效果

时分秒变量会走秒,如下图所示,把aShowTime数组放入Memory查看窗口。
在这里插入图片描述

五.工程源代码下载

源码下载链接如下:
CSDN

六.小结

RTC 可以为嵌入式系统提供精确的时间基准,用于各种定时任务和事件。RTC 可以用于智能家居设备中的时间控制,如智能门锁、智能照明等。

http://www.dtcms.com/wzjs/547214.html

相关文章:

  • 网站换程序 搜索引擎企业建站为什么选择网站定制
  • 网站录入安康市城乡建设规划局 网站
  • 怎么样做网站卖东西宁波seo教程
  • 长沙建站网店免费注册
  • wordpress 分块首页企业seo报价表
  • 织梦网站防黑怎么做论坛型网站 建站
  • 教务处网站建设要求快站网如何开始建站
  • 福州 网站建设如何自己创作一个游戏
  • 网站建设属于什么经营范围十堰建设银行官方网站
  • html网站开发心得沈阳有做网站的吗
  • 网站logo设计在线生成英语课件做的好的网站
  • 在线搭建网站wordpress 评论群发
  • 合肥浦发建设集团网站西安网站开发多少钱
  • 网站开发一定要用框架嘛珠海网站推广优化
  • wordpress 网站建设中中国正式宣布出兵
  • 如何与老板谈网站建设wordpress自建主题
  • 曲靖做网站建设的公司姜堰住房和城乡建设厅网站首页
  • 网站建设公司的名字没有外贸网站 如果做外贸
  • 网站建设多少钱企业网络方案的规划和设计
  • 中国建设银行手机银行下载官方网站iis网站数据库失败
  • 网站开发方案ppt做网站分辨率修改
  • 大量网站开发视频 文档VIP资源苏州网站设计哪家公司好
  • 学院网站建设工作总结个人博客系统wordpress
  • 公司网站建设建议书网站后端性能优化措施
  • 网站顶部地图代码怎么做找一个网站做搜索引擎分析
  • 合规部对于网站建设的意见南阳网站怎么推广
  • 网站店招用什么软件做的wordpress打不开仪表盘
  • 万江网站建设公司内蒙古住房和城乡建设厅网站
  • 北京管庄网站建设公司网站建立公司
  • 网站开发主要框架 后端杭州设计公司招聘