嵌入式智能万年历设计.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

任务要求:

用ARM—M3芯片设计一个智能万年历,要求能够正确显示近100年时间,星期几,时间格式为****年**月**日(星期**)**:**:**(时:分:秒),能够识别出闰年(计时范围能够从1970年1月1日到2100年左右)。

该程序设计工程里包含有main.c(相关配置、和终端联系,提醒输出初始时间、输出实时时间)/date.c(计算实时时间)/stm32f10x_it.c三个文件,各文件内容如下。

Main.c文件:

#includestm32f10x.h

#includestdio.h

#includedate.h

__IOuint32_tTimeDisplay=0;

voidRCC_Configuration(void);

voidNVIC_Configuration(void);

voidGPIO_Configuration(void);

voidUSART_Configuration(void);

intfputc(intch,FILE*f);

voidRTC_Configuration(void);

voidTime_Regulate(structrtc_time*tm);

voidTime_Adjust(void);

voidTime_Display(uint32_tTimeVar);

voidTime_Show(void);

u8USART_Scanf(u32value);

#defineRTCClockSource_LSE

u8const*WEEK_STR[]={日,一,二,三,四,五,六};

structrtc_timesystmtime;

intmain()

{

RCC_Configuration();

NVIC_Configuration();

GPIO_Configuration();

USART_Configuration();

/*在启动时检查备份寄存器BKP_DR1,如果内容不是0xA5A5,则需重新配置时间并询问用户调整时间*/

if(BKP_ReadBackupRegister(BKP_DR1)!=0xA5A5)

{

printf(\r\n\nRTCnotyetconfigured....);

RTC_Configuration();

printf(\r\nRTCconfigured....);

Time_Adjust();

BKP_WriteBackupRegister(BKP_DR1,0xA5A5);

}

else

{

/*启动无需设置新时钟*/

/*检查是否掉电重启*/

if(RCC_GetFlagStatus(RCC_FLAG_PORRST)!=RESET)

{

printf(\r\n\nPowerOnResetoccurred....);

}

/*检查是否Reset复位*/

elseif(RCC_GetFlagStatus(RCC_FLAG_PINRST)!=RESET)

{

printf(\r\n\nExternalResetoccurred....);

}

printf(\r\nNoneedtoconfigureRTC....);

/*等待寄存器同步*/

RTC_WaitForSynchro();

/*允许RTC秒中断*/

RTC_ITConfig(RTC_IT_SEC,ENABLE);

/*等待上次RTC寄存器写操作完成*/

RTC_WaitForLastTask();

}

#ifdefRTCClockOutput_Enable

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);

PWR_BackupAccessCmd(ENABLE);

BKP_TamperPinCmd(DISABLE);

BKP_RTCOutputConfig(BKP_RTCOutputSource_CalibClock);

#endif

RCC_ClearFlag();

Time_Show();

}

voidRCC_Configuration()

{

SystemInit();

RCC_APB2PeriphClockCmd(RCC_APB2Pe

文档评论(0)

139****2118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档