云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 嵌入式智能万年历设计

嵌入式智能万年历设计

  • 62 次阅读
  • 3 次下载
  • 2025/6/25 20:43:20

#elif defined RTCClockSource_LSE

/*允许LSE*/

RCC_LSEConfig(RCC_LSE_ON);

/*等待LSE准备好*/

while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET) { }

/*选择LSE作为RTC时钟源*/

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); #endif

/* Enable RTC Clock */ RCC_RTCCLKCmd(ENABLE);

#ifdef RTCClockOutput_Enable /*禁止Tamper引脚*/

BKP_TamperPinCmd(DISABLE);/*为了将RTCCLK/64在Tamper引脚输出,Tamper功能必须被禁止*/

/*允许RTC时钟在Tamper引脚上输出*/

BKP_RTCCalibrationClockOutputCmd(ENABLE); #endif

/*等待寄存器同步*/ RTC_WaitForSynchro();

/*等待上次RTC寄存器写操作完成*/ RTC_WaitForLastTask();

/*允许RTC秒中断*/

RTC_ITConfig(RTC_IT_SEC, ENABLE);

/*等待上次RTC寄存器写操作完成*/ RTC_WaitForLastTask();

#ifdef RTCClockSource_LSI /*设置分频系数*/

RTC_SetPrescaler(31999); /*RTC周期=RTCCLK/RTC_PR=(32.000kHz/(31999+1))*/

#elif defined RTCClockSource_LSE

RTC_SetPrescaler(32767); /*RTC周期=RTCCLK/RTC_PR=(32.768kHz/(31767+1))*/ #endif

/*等待上次RTC寄存器写操作完成*/ RTC_WaitForLastTask(); }

void Time_Regulate(struct rtc_time *tm) {

u32 Tmp_YY = 0xFF, Tmp_MM = 0xFF, Tmp_DD = 0xFF, Tmp_HH = 0xFF, Tmp_MI = 0xFF, Tmp_SS = 0xFF;

printf(\

printf(\请输入年份(Please Set Years): 20\

while (Tmp_YY == 0xFF) {

Tmp_YY = USART_Scanf(99); }

printf(\年份被设置为: 20%0.2d\\n\\r\

tm->tm_year = Tmp_YY+2000;

Tmp_MM = 0xFF;

printf(\请输入月份(Please Set Months): \

while (Tmp_MM == 0xFF) {

Tmp_MM = USART_Scanf(12); }

printf(\月份被设置为: %d\\n\\r\

tm->tm_mon= Tmp_MM;

Tmp_DD = 0xFF;

printf(\请输入日期(Please Set Dates): \

while (Tmp_DD == 0xFF) {

Tmp_DD = USART_Scanf(31); }

printf(\日期被设置为: %d\\n\\r\

tm->tm_mday= Tmp_DD;

Tmp_HH = 0xFF;

printf(\请输入时钟(Please Set Hours): \

while (Tmp_HH == 0xFF) {

Tmp_HH = USART_Scanf(23); }

printf(\时钟被设置为: %d\\n\\r\

tm->tm_hour= Tmp_HH;

Tmp_MI = 0xFF;

printf(\请输入分钟(Please Set Minutes): \

while (Tmp_MI == 0xFF) {

Tmp_MI = USART_Scanf(59); }

printf(\分钟被设置为: %d\\n\\r\

tm->tm_min= Tmp_MI;

Tmp_SS = 0xFF;

printf(\请输入秒钟(Please Set Seconds): \

while (Tmp_SS == 0xFF) {

Tmp_SS = USART_Scanf(59); }

printf(\秒钟被设置为: %d\\n\\r\

tm->tm_sec= Tmp_SS; }

void Time_Adjust() {

RTC_WaitForLastTask();

Time_Regulate(&systmtime);

GregorianDay(&systmtime);

RTC_SetCounter(mktimev(&systmtime));

RTC_WaitForLastTask(); }

void Time_Display(uint32_t TimeVar) {

to_tm(TimeVar, &systmtime);

printf(\当前时间为: %d年 %d月 %d日 (星期%s) %0.2d:%0.2d:%0.2d\

systmtime.tm_year, systmtime.tm_mon, systmtime.tm_mday, WEEK_STR[systmtime.tm_wday], systmtime.tm_hour, systmtime.tm_min, systmtime.tm_sec); }

void Time_Show() {

printf(\

/* Infinite loop */ while (1) {

/* 每过1s */

if (TimeDisplay == 1) {

Time_Display(RTC_GetCounter()); TimeDisplay = 0; } } }

u8 USART_Scanf(u32 value) {

u32 index = 0;

u32 tmp[2] = {0, 0};

while (index < 2)

搜索更多关于: 嵌入式智能万年历设计 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

#elif defined RTCClockSource_LSE /*允许LSE*/ RCC_LSEConfig(RCC_LSE_ON); /*等待LSE准备好*/ while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET) { } /*选择LSE作为RTC时钟源*/ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); #endif /* Enable RTC Clock */ RCC_RTCCLKCmd(ENABLE); #ifdef RTCClockOutput_Enable /*禁止Tamper引脚*/

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com