你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32时间flash存储格式

[复制链接]
wawawawawa 提问时间:2018-8-15 18:06 /
如题,咨询下大家stm32时间日期存储的时候采用什么格式?bcd格式还是utc时间戳格式,采用bcd格式的话要占用8个字节,采用utc的话,不知道一个存储字节能不能存储?
收藏 评论6 发布时间:2018-8-15 18:06

举报

6个回答
GKoSon 回答时间:2018-8-15 18:40:29
怎么方便怎么来  我一般用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[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蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

stm32learnning 回答时间:2018-8-15 20:41:06

评分

参与人数 1ST金币 -1 收起 理由
zero99 -1 求助帖禁止灌水

查看全部评分

feixiang20 回答时间:2018-8-15 23:05:09
要么去参考参考STM32中time.h文件详解,RTC实时时钟实验—显示日期和时间等资料,至于详细说明,可参考http://blog.csdn.net/wyzjoyful/article/details/52745918, 就不长篇贴了

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

STM1024 回答时间:2018-8-16 08:52:26
当然是使用时间戳的方式更省空间了

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

CC4 回答时间:2018-8-16 09:36:25
习惯使用时间戳。好处是:
1、一个变量就能存储
2、可以很方便转换出任意想要的时间显形式
3、可以很方便的时间计算。
4、跟别的系统兼容,全球统一

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

废鱼 回答时间:2018-8-16 11:32:42
用时间戳的方式比较好,4个字节。可以用通用的TIME.H来转换时间,比我们自己去算的要好的多。我们自己写的容易出bug。我见过一个正好是1号0点时,他算的结果是32号。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版