打印
[STM32F7]

设置RTC时间和日期的简单示例代码

[复制链接]
149|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sj8zw8|  楼主 | 2024-5-31 02:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一旦RTC时钟初始化完成,你可以设置RTC的当前时间和日期。这可以通过编写代码来设置RTC寄存器来完成。下面是一个设置RTC时间和日期的简单示例代码:

c

#include "stm32l0xx.h"

void Set_RTC_Time(uint8_t hour, uint8_t minute, uint8_t second) {
    // 等待RTC寄存器同步
    while ((RTC->ISR & RTC_ISR_INITF) == 0);

    // 设置小时、分钟和秒
    RTC->TR = (hour << RTC_TR_HT_Pos) | (minute << RTC_TR_MNT_Pos) | (second << RTC_TR_ST_Pos);

    // 退出RTC初始化模式
    RTC->ISR &= ~RTC_ISR_INIT;
}

void Set_RTC_Date(uint8_t year, uint8_t month, uint8_t day) {
    // 等待RTC寄存器同步
    while ((RTC->ISR & RTC_ISR_INITF) == 0);

    // 设置年、月和日
    RTC->DR = (year << RTC_DR_YT_Pos) | (month << RTC_DR_MT_Pos) | (day << RTC_DR_DT_Pos);

    // 退出RTC初始化模式
    RTC->ISR &= ~RTC_ISR_INIT;
}

int main(void) {
    // 初始化RTC时钟
    RTC_Init();

    // 设置当前时间为12:34:56
    Set_RTC_Time(12, 34, 56);

    // 设置当前日期为2024年5月31日
    Set_RTC_Date(24, 5, 31);

    while (1) {
        // 循环执行其他任务
    }
}


使用特权

评论回复
沙发
sj8zw8|  楼主 | 2024-5-31 02:50 | 只看该作者
代码的主要步骤包括:

等待RTC寄存器同步,确保进入RTC初始化模式。
设置RTC的小时、分钟和秒,通过将相应的值写入RTC_TR寄存器。
设置RTC的年、月和日,通过将相应的值写入RTC_DR寄存器。
退出RTC初始化模式,允许RTC开始正常工作。
通过这样的方式,你可以在STM32上设置RTC的初始时间和日期,以满足你的应用需求。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

245

帖子

1

粉丝