0%

stm32_note_18day

============================
2022-9-7
============================

一.RTC
    1.RTC的简介
    RTC叫做Real Time Clock,也叫做实时时钟
    在市面上的芯片中,有些芯片内部集成了RTC的外设功能,有些芯片没有集成
    我们使用的STM32F103RBT6芯片中集成了RTC的外设功能
    (STM32F407ZGT6芯片中集成了RTC的外设功能)
    
    RTC在STM32F103RBT6芯片中属于定时器的外设资源(属于其他定时器)
    RTC可以为程序员提供万年历的功能(可以提供年 月 日 星期 时 分 秒的数据)
    
    既然RTC属于定时器的资源
    无论何种定时器,都是由 时钟频率 和 计数值 决定定时长短的

    2.查找RTC的时钟频率
    1)通过时钟树的分析可以了解到
        可以为RTC提供时钟频率的时钟源一共有三种
        (LSE LSI 和 HSE/128)
        但是已知LSI是给独立看门狗(IWDG)提供时钟频率的
        HSE是给锁相环(PLL)提供基础时钟频率的
        所以会选择LSE为RTC提供时钟频率的
    2)通过芯片手册中有关RTC的介绍
        RTC选择了有LSE提供时钟频率,会把LSE先进过分频再进行使用
        需要经过0x7FFF(32767)分频
        ---------------------------------------------------------------
        问题 : 为什么不是32768分频
        因为硬件默认会把分频系数加1,目的是为了防止程序员写0分频
        ---------------------------------------------------------------
    
    3.查找RTC的计数值范围
    1)通过芯片手册中有关RTC的介绍
        RTC使用了两个16位的寄存器来存储RTC的计数值
        存储的计数值是从当前时间到基准时间的秒数
        ----------------------------------------------------
        例如 : 当前时间是2022年9月7日 星期三 10:05:20
        RTC的计数值是
            从1970年1月1日 00:00:00到当前时间的秒数
        从1970年 - 2021年所有的秒数(平年 闰年)
        从2022年1月 - 2022年8月所有的秒数(平年 闰年)
        2022年9月1日 - 2022年9月6日所有的秒数
        2022年9月7日00时 - 2022年9月7日10时所有的秒数
        2022年9月7日10时0分 - 2022年9月7日10时5分所有的秒数
        2022年9月7日10时5分0秒-2022年9月7日10时5分20秒所有秒数
        ----------------------------------------------------
        STM32F103的官方固件只提供了
        RTC_SetCounter : 设置计数值(秒数)
            需要先把当前时间到基准时间的秒数求出
        RTC_GetCounter : 获取计数值(秒数)
            需要把读出的计数值根据基准时间转换成年月日时分秒
        ----------------------------------------------------
        struct time_st
        {
            int Y;
            int M;
            int D;
            int W;
            int h;
            int m;
            int s;
        };

    4)通过芯片的手册了解RTC
        为了保证RTC在主设备断电的情况下仍然可以正常工作
            需要连接纽扣电池
        问题1.怎么判断是第一次操作RTC?
        可以在备份寄存器中存储特定的数据进行判断

============================
作业
1.把今天讲过的内容完整的复习一遍
2.把STM32F407开发板的RTC搞定
3.推进STM32F407开发板的项目工程
4.推进最终项目
============================