实现STM32的日历读取、设置和输出

RTC

RTC(Real-Time Clock,实时时钟)是一种硬件设备,用于提供精确的时间和日期信息。它通常集成在微控制器或单片机中,可以在断电情况下继续运行并保持准确。RTC广泛应用于各种需要时间计数和日期记录的设备和系统,例如计时器、闹钟、数据日志等。

RTC具体流程

RTCCLK经过RTC_DIV预分频,RTC_PRL设置预分频系数,然后得到TR_CLK时钟信号,我们一般设置其周期为1s,RTC_CNT计数器计数,假如1970设置为时间起点为0s,通过当前时间的秒数计算得到当前的时间。RTC_ALR是设置闹钟时间,RTC_CNT计数到RTC_ALR就会产生计数中断,RTC_Second为秒中断,用于刷新时间,RTC_Overflow是溢出中断。RTC Alarm 控制开关机。

实验内容

配置RCC

配置RTC

使能串口

设置项目

编译运行

添加代码

在main函数的while循环中添加以下代码

 HAL_RTC_GetTime(&hrtc, &GetTime, RTC_FORMAT_BIN);//获取时间
      /* Get the RTC current Date */
      HAL_RTC_GetDate(&hrtc, &GetData, RTC_FORMAT_BIN);//获取日期

  /* Display date Format : yy/mm/dd */
  printf("%02d/%02d/%02d\r\n",2000 + GetData.Year, GetData.Month, GetData.Date);
  /* Display date Format : weekday */
	if(GetData.WeekDay==1){
		printf("星期一\r\n");
	}else if(GetData.WeekDay==2){
		printf("星期二\r\n");
	}else if(GetData.WeekDay==3){
		printf("星期三\r\n");
	}else if(GetData.WeekDay==4){
		printf("星期四\r\n");
	}else if(GetData.WeekDay==5){
		printf("星期五\r\n");
	}else if(GetData.WeekDay==6){
		printf("星期六\r\n");
	}else if(GetData.WeekDay==7){
		printf("星期日\r\n");
	}
	/* Display time Format : hh:mm:ss */
  printf("%02d:%02d:%02d\r\n",GetTime.Hours, GetTime.Minutes, GetTime.Seconds);

  printf("\r\n");

  HAL_Delay(1000);

烧录结果

 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值