如题,咨询下大家stm32时间日期存储的时候采用什么格式?bcd格式还是utc时间戳格式,采用bcd格式的话要占用8个字节,采用utc的话,不知道一个存储字节能不能存储?
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[i]*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;
}
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
1、一个变量就能存储
2、可以很方便转换出任意想要的时间显形式
3、可以很方便的时间计算。
4、跟别的系统兼容,全球统一
评分
查看全部评分
评分
查看全部评分