6. RTC

Overview

以 AC632N 为例,读取并修改重新配置 RTC 时间,再读取并修改重新配置当前的闹钟时间。提供 RTC 的应用示例、工程配置、API 介绍和常见问题。

6.1. 应用示例

  • RTC 的具体源代码详见 sdk/bsp/AC632N/src/rtc.c

  • rtc.c 中参考示例如下:

    void rtc_test_demo()
    {
        struct sys_time tmp_time;
        memset((u8 *)&tmp_time, 0, sizeof(tmp_time));
    
        rtc_init(&rtc_data);    //初始化rtc
    
        rtc_read_time(&tmp_time);   //读当前rtc时间
        log_info("rtc_rtc_read_time_before: %d-%d-%d %d:%d:%d", tmp_time.year, tmp_time.month, tmp_time.day, tmp_time.hour, tmp_time.min, tmp_time.sec); //打印读取时间值
    
        rtc_write_time(&test_sys_time); //修改rtc时间
        rtc_read_time(&tmp_time);   //读修改后rtc时间
        log_info("rtc_rtc_read_time_after: %d-%d-%d %d:%d:%d", tmp_time.year, tmp_time.month, tmp_time.day, tmp_time.hour, tmp_time.min, tmp_time.sec);      //打印修改后时间值
    
        rtc_read_alarm(&tmp_time);  //读当前alarm时间
        log_info("rtc_read_alarm_before: %d-%d-%d %d:%d:%d", tmp_time.year, tmp_time.month, tmp_time.day, tmp_time.hour, tmp_time.min, tmp_time.sec);        //打印读取闹钟时间值
    
        rtc_write_alarm(&test_alarm);   //修改alarm时间
        rtc_read_alarm(&tmp_time);  //读修改后alarm时间
        log_info("rtc_read_alarm_after: %d-%d-%d %d:%d:%d", tmp_time.year, tmp_time.month, tmp_time.day, tmp_time.hour, tmp_time.min, tmp_time.sec);         //打印修改后闹钟时间值
    }
    

6.2. 工程配置

  • sdk/apps/main.c 中函数 user_main() 添加如下工程代码:

    int user_main()
    {
        extern void rtc_test_demo(void);
        rtc_test_demo();
    }
    
  • 编译下载后,串口会打印出读取的当前时间、修改后的时间、读取的当前闹钟时间、修改后的闹钟时间。

6.3. API参考

RTC 常用相关 API 介绍,具体软件代码见 sdk/bsp/AC632N/src/rtc.c

Functions

int rtc_init(struct rtc_data *arg)

初始化rtc

Parameters

arg – rtc参数结构体

Returns

0

void rtc_set_alarm_ctrl(u8 set_alarm)

开关闹钟

Parameters

set_alarm – 0->关 1->开

Returns

NULL

void rtc_write_time(struct sys_time *curr_time)

写入rtc时间

Parameters

curr_time – 写入的目标时间

Returns

NULL

void rtc_read_time(struct sys_time *curr_time)

读出rtc时间

Parameters

curr_time – 读出当前时间

Returns

NULL

void rtc_write_alarm(struct sys_time *alarm_time)

写入闹钟时间

Parameters

alarm_time – 写入的目标闹钟时间

Returns

NULL

void rtc_read_alarm(struct sys_time *alarm_time)

读取闹钟时间

Parameters

alarm_time – 读出的闹钟时间

Returns

NULL

u8 rtc_caculate_weekday_by_time(struct sys_time *r_time)

当前日期换成星期几

Parameters

time – 当前日期

Returns

星期几

void rtc_time_dump(void)

打印当前时间