OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5902|回复: 1

F4 的 RTC ,当修改了时,分,秒 中的任意一个 然后马上读取时间和日期是正确的,但是当修改了 年,月,日中的任意一个 然后马上读取时间和日期就不对了

[复制链接]

22

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2014-4-7
在线时间
53 小时
发表于 2015-7-20 17:42:10 | 显示全部楼层 |阅读模式
5金钱
原来使用的是F103ZET6  修改时间和日期  都能正确的读取和显示,现在公司的升级 使用F407ZGT6  修改时,分,秒 中的任意的一个或者几个  然后马上读取能够正确的显示  时间和日期,但是当我修改了年,月,日中的任意一个或者几个  然后马上读取时   第一次读取的时间和日期  是修改之前的日期  但是如果同时修改了时,分,秒  ,时分秒 又是修改之后的时分秒。

比如修改之前:2015-07-20   08:17:30

如果只修改时分秒中的一个比如改为:2015-07-20  08:17:00    然后马上读取   时间和日期都是对的。

如果修改了日期中的任何一个或者几个同时也修改了 时间中的一个或者几个 比如改为: 2015-08-21  08:16:20    然后马上读取  第一次读取时 读出来的是:

2015-07-20  08:16:20   其中日期和修改之前的是一样的  但是时间又和修改之后是一样的    ,但是如果再读取日期和时间  ,他们又都是对的。
F4  RTC  的初始化就是使用原子的RTC 的初始化。

[mw_shl_code=c,true]void RTC_SET_TIME(void) //设置时间和日期的函数 { RTC_TimeTypeDef RTC_TimeStruct_temp; RTC_DateTypeDef RTC_DateStruct_temp; if(receive_data_end==1) //接收数据结束 { receive_data_end=0; RTC_DateStruct_temp.RTC_Year=USART6_RX_BUF[0]; RTC_DateStruct_temp.RTC_Month=USART6_RX_BUF[1]; RTC_DateStruct_temp.RTC_Date=USART6_RX_BUF[2]; RTC_TimeStruct_temp.RTC_Hours=USART6_RX_BUF[3]; RTC_TimeStruct_temp.RTC_Minutes=USART6_RX_BUF[4]; RTC_TimeStruct_temp.RTC_Seconds=USART6_RX_BUF[5]; year_temp=RTC_DateStruct_temp.RTC_Year+2000; month_temp=RTC_DateStruct_temp.RTC_Month; date_temp=RTC_DateStruct_temp.RTC_Date; week_day=RTC_Get_Week(year_temp,month_temp,date_temp); //计算出星期几 if(RTC_TimeStruct_temp.RTC_Hours>12) { RTC_Set_Time(RTC_TimeStruct_temp.RTC_Hours,RTC_TimeStruct_temp.RTC_Minutes,RTC_TimeStruct_temp.RTC_Seconds,RTC_H12_PM); RTC_Set_Date(RTC_DateStruct_temp.RTC_Year,RTC_DateStruct_temp.RTC_Month,RTC_DateStruct_temp.RTC_Date,week_day); } else { RTC_Set_Time(RTC_TimeStruct_temp.RTC_Hours,RTC_TimeStruct_temp.RTC_Minutes,RTC_TimeStruct_temp.RTC_Seconds,RTC_H12_AM); RTC_Set_Date(RTC_DateStruct_temp.RTC_Year,RTC_DateStruct_temp.RTC_Month,RTC_DateStruct_temp.RTC_Date,week_day); } } } void usart6_send_data(void) //发送时间和日期的函数 { RTC_TimeTypeDef RTC_TimeStruct; RTC_DateTypeDef RTC_DateStruct; RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct); RTC_GetDate(RTC_Format_BIN,&RTC_DateStruct); memset(USART6_TX_BUF,0,sizeof(USART6_TX_BUF)); USART6_TX_BUF[0]=0x5a; USART6_TX_BUF[1]=0xa5; USART6_TX_BUF[2]=RTC_DateStruct.RTC_Year; USART6_TX_BUF[3]=RTC_DateStruct.RTC_Month; USART6_TX_BUF[4]=RTC_DateStruct.RTC_Date; USART6_TX_BUF[5]=RTC_TimeStruct.RTC_Hours; USART6_TX_BUF[6]=RTC_TimeStruct.RTC_Minutes; USART6_TX_BUF[7]=RTC_TimeStruct.RTC_Seconds; usart6_send_data(USART6_TX_BUF,8); memset(USART6_TX_BUF,0,sizeof(USART6_TX_BUF)); }[/mw_shl_code]
真心不太明白  ,  求各路大神指教,谢谢!!!!!!




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-7-20 22:04:27 | 显示全部楼层
楼主可以参考下我们的RTC例程,无这个问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 00:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表