BL602 RTC的使用

 1、我们直接调用官方的库即可,主要以下几个函数

    //RTC初始化
    int32_t hal_rtc_init(rtc_dev_t *rtc)

    //获取RTC时间
    int32_t hal_rtc_get_time(rtc_dev_t *rtc, rtc_time_t *time)

    //设置RTC时间
    int32_t hal_rtc_set_time(rtc_dev_t *rtc, const rtc_time_t *time)

 2、这些函数属于hal_drv模块,因此我们需要把工程路径下的Makefile文件中的INCLUDE_COMPONENTS字段添加hal_drv

3、下面我们创建一个RTC任务,间隔1秒获取一次RTC时间,并打印出来


/********************************************************************
 *@brief	RTC任务
 *@input    
 *@return
********************************************************************/
static void user_rtc_task(void *arg)
{
    rtc_dev_t rtc_dev;
    rtc_dev.config.format = HAL_RTC_FORMAT_DEC;
    hal_rtc_init(&rtc_dev);

    rtc_time_t  rtc_time;
    rtc_time.year    = 2022-1900;
    rtc_time.month   = 12;
    rtc_time.date    = 31;
    rtc_time.hr      = 23;
    rtc_time.min     = 58;
    rtc_time.sec     = 30;
    rtc_time.weekday = 4;
    int32_t flag = hal_rtc_set_time(&rtc_dev,&rtc_time);
    printf("hal_rtc_set_time:%d\r\n",flag);

	while(1)
	{
    	vTaskDelay(1000/portTICK_RATE_MS);

        hal_rtc_get_time(&rtc_dev,&rtc_time);
        printf("year %d, ",rtc_time.year+1900);
        printf("month %d, ",rtc_time.month);
        printf("date %d, ",rtc_time.date);
        printf("hr %d, ",rtc_time.hr);
        printf("min %d, ",rtc_time.min);
        printf("sec %d, ",rtc_time.sec);
        printf("weekday %d\r\n",rtc_time.weekday);
    }	

	vTaskDelete(NULL);
}


/********************************************************************
 *@brief	RTC初始化
 *@input    
 *@return
********************************************************************/
void user_rtc_init()
{
    printf("%s\r\n",__func__);
    xTaskCreate(user_rtc_task, "", 512, NULL, 2, NULL);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ESP32内部RTC (Real-Time Clock) 是一种用于精准计时和日期记录的硬件。RTC在不依赖外部环境的情况下,可以提供准确的时间和日期信息。 使用ESP32内部RTC,首先我们需要初始化RTC模块。我们可以通过调用Arduino库中的函数来完成初始化。初始化后,RTC将开始自我维护并计时。 一旦初始化完成,我们可以使用ESP32内部RTC进行以下操作: 1. 获取时间:我们可以使用RTC功能来获取当前的年份、月份、日期、小时、分钟和秒钟。这些信息可以用于各种应用,如记录日志、时间同步等。 2. 设置时间:除了获取时间外,我们还可以使用RTC功能来设置模块的时间值。我们可以手动设置年份、月份、日期、小时、分钟和秒钟,以便与外部时间源进行同步。 3. 闹钟功能:ESP32内部RTC还支持闹钟功能。我们可以设置闹钟,当时间达到指定的时间时,触发一个中断或执行一系列操作。 4. 低功耗:RTC模块在大多数时间处于低功耗模式,以节约能量。这对于需要长时间运行的应用程序非常有用。 值得注意的是,ESP32内部RTC并不是高精度的计时器。它受到一些系统因素的影响,例如温度和电压变化。因此,在对时间要求非常高的应用中,可能需要使用外部的高精度时钟模块。 总的来说,ESP32内部RTC为我们提供了一种简便实用的计时和日期记录解决方案。它可以用于各种应用场景,包括数据日志、时间同步、闹钟等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dear_Wally

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值