在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RA6M3 HMI Board 之RTC實踐

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-06-21 21:31 ? 次閱讀

開發環境:

RT-Thread Studio:v2.2.6

開發板:RA6M3 HMI Board開發板

MCU:R7FA6M3AH3CFB

1 RA6M3 RTC簡介

R7FA6M3 的RTC(Real Time Clock)外設,實質是一個掉電后還繼續運行的定時器。從定時器的角度來說,相對于GPT外設,要簡單很多 ,只有計時和觸發中斷以及輸入捕獲的功能。RTC外設的特別之處并不在于它的定時功能,而在于它掉電還繼續運行的特性。

1687354145569s3ufti9iih

2 RT-Thread 的RTC簡介

RTC (Real-Time Clock)實時時鐘可以提供精確的實時時間,它可以用于產生年、月、日、時、分、秒等信息。目前實時時鐘芯片大多采用精度較高的晶體振蕩器作為時鐘源。有些時鐘芯片為了在主電源掉電時還可以工作,會外加電池供電,使時間信息一直保持有效。

在開啟 RTC 設備框架以及 RTC 驅動之后,應用程序通過 RT-Thread 提供的 RTC設備管理接口來訪問 RTC 硬件,相關接口如下所示:

函數 描述
rt_device_find() 根據 RTC設備名稱查找設備獲取設備句柄
set_date() 設置日期,年、月、日(當地時區)
set_time() 設置時間,時、分、秒(當地時區)

另外,alarm 鬧鐘功能是基于 RTC 設備實現的,根據用戶設定的鬧鐘時間,當時間到時觸發 alarm 中斷,執行鬧鐘事件。

alarm 組件提供的接口如下所示:

函數 描述
rt_alarm_create() 創建鬧鐘
rt_alarm_start() 啟動鬧鐘
rt_alarm_stop() 停止鬧鐘
rt_alarm_delete() 刪除鬧鐘
rt_alarm_control() 控制alarm設備
rt_alarm_dump() 打印顯示設置的鬧鐘信息

關于RTC的更多資料請參看RT-Thread官方手冊:

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/rtc/rtc

3 RA6M3 RTC配置

接下來配置RTC,只需要簡單配置就可使用。雙擊工程中的 RA Smart Configurator 圖標,第一次打開需要配置正確的 FSP 安裝路徑。

16873541462029xkwqaqxyz

16873541464403ffa5u9gew

  • FSP配置RTC

1.添加 RTC 設備

1687354146762bi05cijzcm

2.配置 RTC

1687354147144rqac80kifa

RT-Thread 中只是用了一個 RTC 設備,所以沒有對其進行編號,如果是新創建的 RTC 設備需要注意 name 字段,在驅動中默認使用的是g_rtc,不然編譯會提示沒有相應的設備,修改 Callback 為 rtc_callback。

  • 配置RTC和alarm組件

然后打開對應的通道

1687354147528bk0ae6r22e

同時打開alarm組件。

1687354147790iwqe13x0vj

4 RTC代碼實現

首先設置了年月日時分秒信息,然后獲取當前時間,接著設置一個alarm,值得注意的是,alarm是基于RTC的,因此需要先將RTC初始化,然后才能開啟alarm事件。核心代碼如下:

#include < rtthread.h >
#include < rtdevice.h >
#include < time.h >

#define DBG_LEVEL DBG_LOG
#define DBG_SECTION_NAME "rtc"
#include < rtdbg.h >

#define RTC_NAME "rtc"

rt_sem_t rtc_init_sem = RT_NULL;

static int uesr_rtc_init(void)
{
    rt_err_t ret = RT_EOK;
    time_t now;
    rt_device_t device = RT_NULL;

    /*創建初始化完成信號量*/
    rtc_init_sem = rt_sem_create("rtc init flag", 0, 0);
    if(rtc_init_sem == RT_NULL)
    {
        rt_kprintf("rtc sem init failed!");
        return RT_ERROR;
    }
    /*尋找設備*/
    device = rt_device_find(RTC_NAME);
    if (!device)
    {
        rt_kprintf("find %s failed!", RTC_NAME);
        return RT_ERROR;
    }
    /*初始化RTC設備*/
    if(rt_device_open(device, 0) != RT_EOK)
    {
        rt_kprintf("open %s failed!", RTC_NAME);
        return RT_ERROR;
    }
    /* 設置日期 */
    ret = set_date(2023, 06, 21);
    if (ret != RT_EOK)
    {
        rt_kprintf("set RTC date failed\\n");
        return ret;
    }

    /* 設置時間 */
    ret = set_time(20, 57, 50);
    if (ret != RT_EOK)
    {
        rt_kprintf("set RTC time failed\\n");
        return ret;
    }

    rt_sem_release(rtc_init_sem);
    /* 獲取時間 */
    now = time(RT_NULL);
    rt_kprintf("RTC device init success,now time is %s\\n", ctime(&now));

    return ret;
}

/*作為用戶APP初始化*/
INIT_APP_EXPORT(uesr_rtc_init);

static time_t now;

void user_alarm_callback(rt_alarm_t alarm, time_t timestamp)
{
    now = time(RT_NULL);
    rt_kprintf("The alarm clock rings, now time is %s\\n", ctime(&now));
    rt_alarm_stop(alarm);
}

void alarm_test(void)
{
    if(rt_sem_trytake(rtc_init_sem) != RT_EOK)
    {
        rt_kprintf("please init rtc first");
        return ;
    }
    struct rt_alarm_setup setup;
    struct rt_alarm * alarm = RT_NULL;
    static time_t now;
    struct tm p_tm;

    if (alarm != RT_NULL)
        return;

    /*獲取當前時間戳,并把下一秒時間設置為鬧鐘時間 */
    now = time(NULL) + 5;
    gmtime_r(&now,&p_tm);

    setup.flag = RT_ALARM_SECOND;
    setup.wktime.tm_year = p_tm.tm_year;
    setup.wktime.tm_mon = p_tm.tm_mon;
    setup.wktime.tm_mday = p_tm.tm_mday;
    setup.wktime.tm_wday = p_tm.tm_wday;
    setup.wktime.tm_hour = p_tm.tm_hour;
    setup.wktime.tm_min = p_tm.tm_min;
    setup.wktime.tm_sec = p_tm.tm_sec;
    alarm = rt_alarm_create(user_alarm_callback, &setup);
    if(RT_NULL != alarm)
    {
        rt_alarm_start(alarm);
    }
}

/*export msh cmd*/
MSH_CMD_EXPORT(alarm_test,a alarm test);

5 測試驗證

編譯下載,調試信息如下:

1687354148106fiqkq027nj

從以上打印信息可以看出,rtc已經使能,然后使用MSH命令‘alarm_test’即可使能RTC線程,并且執行相應的事件。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 定時器
    +關注

    關注

    23

    文章

    3253

    瀏覽量

    115063
  • RTC
    RTC
    +關注

    關注

    2

    文章

    541

    瀏覽量

    66770
  • GPT
    GPT
    +關注

    關注

    0

    文章

    354

    瀏覽量

    15445
  • RA6M3
    +關注

    關注

    0

    文章

    52

    瀏覽量

    127
收藏 人收藏

    評論

    相關推薦

    RA6M3 HMI BoardSDHI測評實踐步驟

    首先對SDHI和SDIO本質上的區別進行說明,然后使用RT-Studio新建工程進行開發,通過RASC對RA6M3的底層硬件配置,然后使用SDHI接口實現SD的識別,搭配文件系統對SD卡進行讀寫操作,同時記錄開發遇到的問題。
    的頭像 發表于 08-07 15:54 ?1220次閱讀
    <b class='flag-5'>RA6M3</b> <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b><b class='flag-5'>之</b>SDHI測評<b class='flag-5'>實踐</b>步驟

    如何利用rt-thread和HMI Board RA6M3開發一套物聯網工控機?

    近年來,隨著新一輪的科技發展以及工業產業升級,工業經濟慢慢的由數字化向網絡化和智能化發展。基于這一理念,本人利用rt-thread和HMI Board RA6M3開發了一套物聯網工控機。
    的頭像 發表于 09-15 15:27 ?1529次閱讀
    如何利用rt-thread和<b class='flag-5'>HMI</b> <b class='flag-5'>Board</b> <b class='flag-5'>RA6M3</b>開發一套物聯網工控機?

    RA6M3 HMI Board評測挑戰】-瑞薩RA6M3上的CAN實踐

    RA6M3 HMI Board 評測大挑戰】-瑞薩RA6M3上的CAN實踐
    的頭像 發表于 10-17 14:55 ?2078次閱讀
    【<b class='flag-5'>RA6M3</b> <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b>評測挑戰】-瑞薩<b class='flag-5'>RA6M3</b>上的CAN<b class='flag-5'>實踐</b>

    RA6M3數據手冊(英)

    RA6M3數據手冊(英)
    發表于 11-07 19:49 ?0次下載
    <b class='flag-5'>RA6M3</b>數據手冊(英)

    RA6M3硬件用戶手冊(英)

    RA6M3硬件用戶手冊(英)
    發表于 11-07 19:49 ?0次下載
    <b class='flag-5'>RA6M3</b>硬件用戶手冊(英)

    RA6M3數據手冊(中英)

    RA6M3數據手冊(中英)
    發表于 11-07 19:49 ?0次下載
    <b class='flag-5'>RA6M3</b>數據手冊(中英)

    RA6M3硬件用戶手冊(中英)

    RA6M3硬件用戶手冊(中英)
    發表于 11-07 19:49 ?2次下載
    <b class='flag-5'>RA6M3</b>硬件用戶手冊(中英)

    RA6M3 組數據表

    RA6M3 組數據表
    發表于 05-12 19:25 ?0次下載
    <b class='flag-5'>RA6M3</b> 組數據表

    RA6M3 HMI Board SDHI實踐

    進行說明,然后使用RT-Studio新建工程進行開發,通過RASC對RA6M3的底層硬件配置,然后使用SDHI接口實現SD的識別,搭配文件系統對SD卡進行讀寫操作,同時記錄開發遇到的問題。 1.2
    的頭像 發表于 06-19 18:15 ?1128次閱讀
    <b class='flag-5'>RA6M3</b> <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b> <b class='flag-5'>之</b>SDHI<b class='flag-5'>實踐</b>

    RA6M3 組用戶手冊:硬件

    RA6M3 組用戶手冊:硬件
    發表于 06-29 19:17 ?0次下載
    <b class='flag-5'>RA6M3</b> 組用戶手冊:硬件

    RA6M3 組數據表

    RA6M3 組數據表
    發表于 06-29 19:17 ?0次下載
    <b class='flag-5'>RA6M3</b> 組數據表

    【線下培訓】上海臨港: RT-Thread × 瑞薩 工業監視器 RA6M3 HMI Board解決方案

    RT-Thread 與瑞薩將于10月14日在上海臨港舉行一場線下培訓。 本次培訓將為開發者們帶來期待已久的熱門技術主題, RT-Thread × 瑞薩 工業監視器 RA6M3 HMI Board
    的頭像 發表于 09-07 17:40 ?826次閱讀
    【線下培訓】上海臨港: RT-Thread × 瑞薩 工業監視器 <b class='flag-5'>RA6M3</b> <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b>解決方案

    瑞薩RA6M3 HMI-Board Video Demo 上手指南

    高性能芯片 RA6M3 及 RT-Thread 和 LVGL 軟件生態,HMI Board 不僅硬件性能強勁,同時軟件生態豐富,助力開發者快速開發出 GUI 智能硬件產品。 本示例開源鏈接: https
    的頭像 發表于 09-15 18:25 ?1811次閱讀
    瑞薩<b class='flag-5'>RA6M3</b> <b class='flag-5'>HMI-Board</b> Video Demo 上手指南

    瑞薩 RA6M3 開發實踐指南-UART實踐

    RT-Thread即將發布一系列RA6M3外設驅動的實踐指南,我們將使用瑞薩RA6M3 HMI-Board 開發板,帶領大家上手RT-Thread設備驅動。? 【硬件介紹】 1.? 開
    的頭像 發表于 09-23 12:15 ?1407次閱讀

    RA6M3 RT-Thread* LVGL HMI Board開發實踐指南-GPIO實踐

    RT-Thread即將發布一系列RA6M3外設驅動的實踐指南,我們將使用瑞薩RA6M3 HMI-Board 開發板,帶領大家上手RT-Thread設備驅動, 本篇文章將介紹GPIO外設
    的頭像 發表于 11-30 19:05 ?1335次閱讀
    <b class='flag-5'>RA6M3</b> RT-Thread* LVGL <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b>開發<b class='flag-5'>實踐</b>指南-GPIO<b class='flag-5'>實踐</b>
    主站蜘蛛池模板: 国产精品久久久久久久久齐齐| 狠狠做久久深爱婷婷97动漫| 免费看男女做好爽好硬视频| 精品亚洲大全| 成熟妇女毛耸耸性视频| 欧美色综合高清免费| 欧美色视频日本| 久久伊人男人的天堂网站| 四虎www成人影院观看| 亚洲一区二区三区免费视频| 久久99热精品免费观看k影院| 老司机狠狠k免费毛片| 午夜亚洲视频| 手机看片日韩高清1024| 亚洲高清日韩精品第一区| 天天干天天干天天色| 久久天天躁夜夜躁狠狠85麻豆| 3344免费播放观看视频| 亚洲 [12p]| 亚洲欧美视频二区| sese亚洲| 国产成人精品高清免费| 五月婷婷一区| 欧美高清成人videosex| 日本午夜大片免费观看视频| 五月六月激情| 欧美一级视频免费| 欧美性生活网站| 国产精品三区四区| 视频综合网| 国产农村乱色xxxx| 亚洲三级电影| 欧美1| 浓厚な接吻と肉体の交在线观看| 国内自拍网红在综合图区| 国产亚洲精品线观看77| 377p亚洲欧洲日本大胆色噜噜| 美女被上视频| 男人j进女人j视频| 日日噜噜爽爽狠狠视频| 高清色|