stm32时间flash存储格式
如题,咨询下大家stm32时间日期存储的时候采用什么格式?bcd格式还是utc时间戳格式,采用bcd格式的话要占用8个字节,采用utc的话,不知道一个存储字节能不能存储? 怎么方便怎么来我一般用2种 一种是保存的结构体年月日时分秒 每次结构体写入 结构体读出另外一种就是时间搓 和网络或者RTC好对接RTC_SetCounter(secCount);这就是U32就行
/*
函数功能:日期转换为秒并配置RTC
函数参数:年、月、日、时、分、秒
返回值: 返回0成功 其他失败
*/
uint8_t RTC_SetSec(_TM* DATA)
{
uint32_t secCount = 0;
uint16_t i;
uint16_t year=DATA->year;
uint8_t month=DATA->mon;
uint8_t day=DATA->day;
uint8_t hour=DATA->hour;
uint8_t minute=DATA->min;
uint8_t sec=DATA->sec;
if (year <1970 || year >2099)
{
return 1;
}
for (i=1970; i<year; i++)
{
if (isLeapYear(i))
{
secCount += 31622400UL;
}
else
{
secCount += 31536000UL;
}
}
for (i=0; i<month-1; i++)
{
secCount += ((uint32_t)monthTable*86400UL);
if (isLeapYear(year) && i==1) //润年 多加一天
{
secCount += 86400UL;
}
}
secCount += (uint32_t)(day-1) * 86400UL;
secCount += (uint32_t)(hour)*3600;
secCount += (uint32_t)(minute)*60;
secCount += (uint32_t)(sec);
/*执行以下操作可以使能对备份寄存器和 RTC 的访问:
1)通过设置寄存器 RCC_APB1ENR 的 PWREN 和 BKPEN 位来打开电源和后备接口的时钟
2)电源控制寄存器(PWR_CR)的 DBP 位来使能对后备寄存器和 RTC 的访问
*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
RTC_SetCounter(secCount);
RTC_WaitForLastTask();
return 0;
} :lol:lol 要么去参考参考STM32中time.h文件详解,RTC实时时钟实验—显示日期和时间等资料,至于详细说明,可参考http://blog.csdn.net/wyzjoyful/article/details/52745918, 就不长篇贴了 当然是使用时间戳的方式更省空间了 习惯使用时间戳。好处是:
1、一个变量就能存储
2、可以很方便转换出任意想要的时间显形式
3、可以很方便的时间计算。
4、跟别的系统兼容,全球统一 用时间戳的方式比较好,4个字节。可以用通用的TIME.H来转换时间,比我们自己去算的要好的多。我们自己写的容易出bug。我见过一个正好是1号0点时,他算的结果是32号。
页:
[1]