RTC
更新时间:2019-01-25 14:43:34
接口列表
接口详情
int32_t hal_rtc_init(rtc_dev_t *rtc)
描述 |
初始化指定RTC |
参数 |
rtc:RTC设备描述 |
|
time:存储时间的缓冲区 |
返回值 |
返回成功或失败, 返回0表示RTC初始化成功,非0表示失败 |
int32_t hal_rtc_get_time(rtc_dev_t *rtc, rtc_time_t *time)
描述 |
获取指定RTC时间 |
参数 |
rtc:RTC设备描述 |
|
time:要设定的时间 |
返回值 |
返回成功或失败, 返回0表示RTC时间获取成功,非0表示失败 |
int32_t hal_rtc_set_time(rtc_dev_t *rtc, const rtc_time_t *time)
描述 |
设置指定RTC时间 |
参数 |
rtc:RTC设备描述 |
返回值 |
返回成功或失败, 返回0表示RTC时间设定成功,非0表示失败 |
int32_t hal_rtc_finalize(rtc_dev_t *rtc)
描述 |
关闭指定RTC |
参数 |
rtc:RTC设备描述 |
返回值 |
返回成功或失败, 返回0表示RTC关闭成功,非0表示失败 |
相关结数据结构
#define HAL_RTC_FORMAT_DEC 1
#define HAL_RTC_FORMAT_BCD 2
相关结数据结构
rtc_dev_t
typedef struct {
uint8_t port;
rtc_config_t config;
void *priv;
} rtc_dev_t;
rtc_config_t
typedef struct {
uint8_t format;
} rtc_config_t;
rtc_time_t
typedef struct {
uint8_t sec;
uint8_t min;
uint8_t hr;
uint8_t weekday;
uint8_t date;
uint8_t month;
uint8_t year;
} rtc_time_t;
使用示例
#include <aos/hal/rtc.h>
#define RTC1_PORT_NUM 1
rtc_dev_t rtc1;
int application_start(int argc, char *argv[])
{
int ret = -1;
rtc_config_t rtc_cfg;
rtc_time_t time_buf;
rtc1.port = RTC1_PORT_NUM;
rtc1.config.format = HAL_RTC_FORMAT_DEC;
ret = hal_rtc_init(&rtc1);
if (ret != 0) {
printf("rtc1 init error !\n");
}
time_buf.sec = 0;
time_buf.min = 0;
time_buf.hr = 0;
time_buf.weekday = 2;
time_buf.date = 1;
time_buf.month = 1;
time_buf.year = 2019;
ret = hal_rtc_set_time(&rtc1, &time_buf);
if (ret != 0) {
printf("rtc1 set time error !\n");
}
memset(&time_buf, 0, sizeof(rtc_time_t));
ret = hal_rtc_get_time(&rtc1, &time_buf);
if (ret != 0) {
printf("rtc1 get time error !\n");
}
hal_rtc_finalize(&rtc1);
while(1) {
aos_msleep(500);
};
}
注:port为逻辑端口号,其与物理端口号的对应关系见具体的对接实现
移植说明
新建hal\_rtc\_xxmcu.c和hal\_wdg\_xxmcu.h的文件,并将这两个文件放到platform/mcu/xxmcu/hal目录下。在hal\_rtc\_xxmcu.c中实现所需要的hal函数,hal\_rtc\_xxmcu.h中放置相关宏定义。
参考platform/mcu/stm32l4xx/src/STM32L496G-Discovery/hal/hal\_rtc\_stm32l4.c