发新帖我要提问
12
返回列表
打印
[应用相关]

STM32H750XBH6 - RT-Thread 开启RTC 与 Alarm组件

[复制链接]
楼主: 八层楼
手机看帖
扫描二维码
随时随地手机跟帖
21
八层楼|  楼主 | 2021-7-3 09:28 | 只看该作者 回帖奖励 |倒序浏览
static void rtc_alarm_second_start(void)
{
    if (p_alarm_sec != RT_NULL)
        rt_alarm_start(p_alarm_sec);
}

static void rtc_alarm_second_stop(void)
{
    if (p_alarm_sec != RT_NULL)
        rt_alarm_stop(p_alarm_sec);
}

static void rtc_alarm_second_delete(void)
{
    if (p_alarm_sec != RT_NULL)
    {
        if (rt_alarm_delete(p_alarm_sec) == RT_EOK)
            p_alarm_sec = RT_NULL;
    }
}



使用特权

评论回复
22
八层楼|  楼主 | 2021-7-3 09:29 | 只看该作者
static void rtc_alarm_minute_create(void)
{
    static time_t now;
    static struct tm tm;

    if (p_alarm_min != RT_NULL)
        return;

    now = time(NULL) + 60;
#ifdef _WIN32
    _gmtime32_s(&tm, &now);
#else
    gmtime_r(&now, &tm);
#endif

    p_alarm_min = rtc_alarm_test_create(alarm_minute_cb, RT_ALARM_MINUTE, &tm);
}


使用特权

评论回复
23
八层楼|  楼主 | 2021-7-3 09:30 | 只看该作者
static void rtc_alarm_minute_start(void)
{
    if (p_alarm_min != RT_NULL)
        rt_alarm_start(p_alarm_min);
}

static void rtc_alarm_minute_stop(void)
{
    if (p_alarm_min != RT_NULL)
        rt_alarm_stop(p_alarm_min);
}

static void rtc_alarm_minute_delete(void)
{
    if (p_alarm_min != RT_NULL)
    {
        if (rt_alarm_delete(p_alarm_min) == RT_EOK)
            p_alarm_min = RT_NULL;
    }
}


使用特权

评论回复
24
八层楼|  楼主 | 2021-7-3 09:31 | 只看该作者
static void rtc_alarm_hour_create(void)
{
    static time_t now;
    static struct tm tm;

    if (p_alarm_hour != RT_NULL)
        return;

    now = time(NULL) + 3600;
#ifdef _WIN32
    _gmtime32_s(&tm, &now);
#else
    gmtime_r(&now, &tm);
#endif

    p_alarm_hour = rtc_alarm_test_create(alarm_hour_cb, RT_ALARM_HOUR, &tm);
}


使用特权

评论回复
25
八层楼|  楼主 | 2021-7-3 09:31 | 只看该作者

static void rtc_alarm_hour_start(void)
{
    if (p_alarm_hour != RT_NULL)
        rt_alarm_start(p_alarm_hour);
}

static void rtc_alarm_hour_stop(void)
{
    if (p_alarm_hour != RT_NULL)
        rt_alarm_stop(p_alarm_hour);
}

static void rtc_alarm_hour_delete(void)
{
    if (p_alarm_hour != RT_NULL)
    {
        if (rt_alarm_delete(p_alarm_hour) == RT_EOK)
            p_alarm_hour = RT_NULL;
    }
}



使用特权

评论回复
26
八层楼|  楼主 | 2021-7-3 09:32 | 只看该作者
void rtc_alarm_start(int argc, char **argv)
{
    int index = 0;

    if (argc >= 2)
    {
        index = atoi(argv[1]);
    }

    switch(index)
    {
        case 0:
            rtc_alarm_hour_start();
            break;
        case 1:
            rtc_alarm_minute_start();
            break;
        case 2:
            rtc_alarm_second_start();
            break;
        case 3:
            rtc_alarm_time_start();
            break;
        default:
            break;
    }
}



使用特权

评论回复
27
八层楼|  楼主 | 2021-7-3 09:33 | 只看该作者
void rtc_alarm_stop(int argc, char **argv)
{
    int index = 0;

    if (argc >= 2)
    {
        index = atoi(argv[1]);
    }

    switch(index)
    {
        case 0:
            rtc_alarm_hour_stop();
            break;
        case 1:
            rtc_alarm_minute_stop();
            break;
        case 2:
            rtc_alarm_second_stop();
            break;
        case 3:
            rtc_alarm_time_stop();
            break;
        default:
            break;
    }
}



使用特权

评论回复
28
八层楼|  楼主 | 2021-7-3 09:34 | 只看该作者

void rtc_alarm_create(int argc, char **argv)
{
    int index = 0;

    if (argc >= 2)
    {
        index = atoi(argv[1]);
    }

    switch(index)
    {
        case 0:
            rtc_alarm_hour_create();
            break;
        case 1:
            rtc_alarm_minute_create();
            break;
        case 2:
            rtc_alarm_second_create();
            break;
        case 3:
            rtc_alarm_time_create();
            break;
        default:
            break;
    }
}



使用特权

评论回复
29
八层楼|  楼主 | 2021-7-3 09:34 | 只看该作者

void rtc_alarm_delete(int argc, char **argv)
{
    int index = 0;

    if (argc >= 2)
    {
        index = atoi(argv[1]);
    }

    switch(index)
    {
        case 0:
            rtc_alarm_hour_delete();
            break;
        case 1:
            rtc_alarm_minute_delete();
            break;
        case 2:
            rtc_alarm_second_delete();
            break;
        case 3:
            rtc_alarm_time_delete();
            break;
        default:
            break;
    }
}

MSH_CMD_EXPORT(rtc_gettime, rtc get time);
MSH_CMD_EXPORT(rtc_alarm_create, rtc alarm_create);
MSH_CMD_EXPORT(rtc_alarm_delete, rtc alarm_delete);
MSH_CMD_EXPORT(rtc_alarm_start, rtc alarm_start);
MSH_CMD_EXPORT(rtc_alarm_stop, rtc alarm_stop);

#endif


使用特权

评论回复
30
八层楼|  楼主 | 2021-7-3 09:35 | 只看该作者
总结
  • RT-Thread RTC alarm组件,配置起来,稍微有点麻烦。
  • Alarm闹钟功能,使能组件后,还是需要创建闹钟、开启闹钟、停止闹钟、删除闹钟业务代码的配合。
  • 多使用,多总结。

使用特权

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

本版积分规则