0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英飛凌PSC62 ALARM試驗(yàn)

華仔的編程隨筆 ? 來(lái)源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-05-28 12:50 ? 次閱讀

目的

為了達(dá)到節(jié)能狀態(tài),采用RTCalarm喚醒睡眠。

  1. 開啟RTC以及RTC alarm

image.png

  1. 修改drv_rtc.c中rtc_init,增加連擇時(shí)鐘源,代碼如下:
static rt_err_t _rtc_init(void)
{
#ifdef   BSP_RTC_USING_LSE
    Cy_RTC_SelectClockSource(CY_RTC_CLK_SELECT_WCO);
#else
    Cy_RTC_SelectClockSource(CY_RTC_CLK_SELECT_ILO);
#endif
    if (cyhal_rtc_init(&rtc_obj) != RT_EOK)
    {
        LOG_E("rtc init failed.");
        return -RT_ERROR;
    }

    return RT_EOK;

}
  1. 增加alarm方面的函數(shù)如下:
static struct rt_alarm * p_alarm_hour = RT_NULL;

/* 鬧鐘的回調(diào)函數(shù),多個(gè)鬧鐘,可以有多個(gè)回調(diào)函數(shù),用于創(chuàng)建鬧鐘時(shí)注冊(cè)。鬧鐘時(shí)間到了,會(huì)執(zhí)行此函數(shù) */
static void alarm_hour_cb(rt_alarm_t alarm, time_t timestamp)
{
    LOG_D("alarm_hour_cb ok!
");
}

static void rtc_alarm_hour_create(void)
{
    static time_t now;
    struct tm *p_tm;
    struct rt_alarm_setup alarm_setup_test;

    if (p_alarm_hour != RT_NULL)
        return;

    now = time(NULL);
    p_tm = localtime(&now);
    alarm_setup_test.flag = RT_ALARM_SECOND;
    alarm_setup_test.wktime.tm_year = p_tm->tm_year;
    alarm_setup_test.wktime.tm_mon = p_tm->tm_mon;
    alarm_setup_test.wktime.tm_mday = p_tm->tm_mday;
    alarm_setup_test.wktime.tm_wday = p_tm->tm_wday;
    alarm_setup_test.wktime.tm_hour = p_tm->tm_hour + 1;
    alarm_setup_test.wktime.tm_min = p_tm->tm_min;
    alarm_setup_test.wktime.tm_sec = p_tm->tm_sec;

    p_alarm_hour = rt_alarm_create(alarm_hour_cb, &alarm_setup_test);
}

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;
    }
}
  1. 修改rt_hw_rtc_init函數(shù),增加alarm創(chuàng)建與啟動(dòng)。
static int rt_hw_rtc_init(void)
{
    rt_err_t result = RT_EOK;

    ifx32_rtc_dev.ops = &_rtc_ops;

    if (rt_hw_rtc_register(&ifx32_rtc_dev, "rtc", RT_DEVICE_FLAG_RDWR, RT_NULL) != RT_EOK)
    {
        LOG_E("rtc init failed");
        result = -RT_ERROR;
    }
    else
    {
        LOG_D("rtc init success");
    }
    /* 設(shè)置ALARM*/
    rtc_alarm_hour_create();
    rtc_alarm_hour_start();
    return result;
}
  1. 修改主函數(shù)代碼如下:
#include 
#include 

#include "drv_gpio.h"



#define LED_PIN     GET_PIN(0, 0)
#define USE_SECONDS_FOR_ALARM 10
#define LONG_GLITCH_DELAY_MS        100u    /* in ms */
#define RTC_INTERRUPT_PRIORITY      3u

void set_rtc_alarm_date_time(void);
cyhal_rtc_t rtc_obj;

int main(void)
{
    cy_rslt_t result;
    __enable_irq();
    rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
    rt_thread_mdelay(500);
    /* Initialize RTC */
    cyhal_rtc_enable_event(&rtc_obj, CYHAL_RTC_ALARM, RTC_INTERRUPT_PRIORITY, true);
    for (;;)
    {
        rt_kprintf("Go to DeepSleep mode
");

        /* Set the RTC generate alarm after 10 seconds */
        set_rtc_alarm_date_time();
        cyhal_system_delay_ms(LONG_GLITCH_DELAY_MS);

        /* Go to deep sleep */
        cyhal_syspm_deepsleep();
        rt_kprintf("Wakeup from DeepSleep mode
");

    }
}


/*******************************************************************************/
void set_rtc_alarm_date_time(void)
{
    cy_rslt_t result;

    /* Print the RTC alarm time by UART */
    //LOG_D("RTC alarm will be generated after 10 seconds
");
    /* Set the RTC alarm for the specified number of seconds in the future by editing the macro(USE_SECONDS_FOR_ALARM) */
    result = cyhal_rtc_set_alarm_by_seconds(&rtc_obj, USE_SECONDS_FOR_ALARM);
    if (result != CY_RSLT_SUCCESS)
    {
        rt_kprintf("RTC alarm err
");
    }
}

下載到開發(fā)板后,打開串口終端,顯示系統(tǒng)進(jìn)入睡眠,然后在10秒鐘后喚醒

image.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    523

    瀏覽量

    66229
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    英飛凌PSC62低功耗溫濕度數(shù)據(jù)采集

    驅(qū)動(dòng)hs3003溫濕度傳感器,采集完數(shù)據(jù)后進(jìn)入深度睡眠模式,以達(dá)到節(jié)能的目的。
    的頭像 發(fā)表于 05-30 09:05 ?41.5w次閱讀
    <b class='flag-5'>英飛凌</b><b class='flag-5'>PSC62</b>低功耗溫濕度數(shù)據(jù)采集

    英飛凌推出62mm CoolSiC?模塊,為碳化硅開辟新應(yīng)用領(lǐng)域

    62mm模塊配備了英飛凌的CoolSiC MOSFET芯片,可實(shí)現(xiàn)極高的電流密度。其極低的開關(guān)損耗和傳導(dǎo)損耗可以最大限度地減少冷卻器件的尺寸。
    發(fā)表于 07-14 17:40 ?1566次閱讀

    英飛凌PSoC? 62開發(fā)板 -LCD ILI9341 8080 DEMO

    英飛凌開發(fā)板
    rx_ted
    發(fā)布于 :2024年03月07日 21:08:39

    DSP的PSC如何配置

    這個(gè)程序大概什么意思,逐句求解一下!/*Enable Function for PSC0*/void PSC0_lPSC_enable(unsigned int PD, unsigned int
    發(fā)表于 04-16 09:46

    請(qǐng)問(wèn)這里的fCK_PSC指的是什么?

    計(jì)數(shù)器的時(shí)鐘頻率CK_CNT等于fCK_PSC/(PSC[15:0]+1)。這里的fCK_PSC指的是什么呢?
    發(fā)表于 10-16 03:17

    PSC開啟模塊出現(xiàn)以下錯(cuò)誤

    (SOC_PSC_0_REGS, HW_PSC_EMIFA, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);}但出現(xiàn)以下錯(cuò)誤:unr
    發(fā)表于 11-04 09:06

    浙江常年大量回收英飛凌二手模塊系列IGBT模塊

    模塊長(zhǎng)期高價(jià)回收英飛凌IGBT模塊FF300R12KT3_E 300A,1200V,共發(fā)射極,用于矩陣開關(guān),雙向變換器等 62mm ? 無(wú)錫不限量收購(gòu)回收英飛凌IGBT模塊電話151-5220-9946QQ2360670759
    發(fā)表于 02-24 17:06

    回收英飛凌ic 收購(gòu)英飛凌ic

    ▄▅ TEL:135-3012-2202 ▄▅ QQ:8798-21252 ‖‖回收英飛凌ic ,回收英飛凌汽車ic,專業(yè)回收英飛凌ic,庫(kù)存英飛凌汽車ic高價(jià)回收,汽車庫(kù)存芯片專業(yè)回
    發(fā)表于 05-15 15:24

    重慶市長(zhǎng)期高價(jià)回收各種英飛凌IGBT型號(hào)模塊

    長(zhǎng)期高價(jià)回收英飛凌IGBT模塊FF300R12KT3_E 300A,1200V,共發(fā)射極,用于矩陣開關(guān),雙向變換器等 62mm ?無(wú)錫不限量收購(gòu)回收英飛凌IGBT模塊FF400R12KT3_E
    發(fā)表于 09-17 19:23

    英飛凌PSoC62 實(shí)現(xiàn)超低功耗溫濕度計(jì)

    英飛凌PSoC62是一款Cortex-M0+與Cortex-M4的雙內(nèi)核MCU,其有著非常優(yōu)秀的超低功耗性能。 溫度計(jì)的器材 英飛凌PSoC62開發(fā)板 這是一款
    發(fā)表于 06-03 10:14

    Touch-activated Alarm circuits

    Touch-activated Alarm,Attach trigger wire to the latch nut/bolt Isolate this Latch from any other metal parts
    發(fā)表于 03-12 22:41 ?729次閱讀
    Touch-activated <b class='flag-5'>Alarm</b> circuits

    FPGA_Alarm_Clock

    FPGA_Alarm_Clock,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 02-22 14:46 ?0次下載

    英飛凌聯(lián)合 RT-Thread 發(fā)布 PSoC? 62 with CAPSENSE ? evaluation kit開發(fā)板

    近日,RT-Thread 社區(qū)團(tuán)隊(duì)打造了新品開發(fā)板:英飛凌聯(lián)合 RT-Thread 發(fā)布 ?PSoC 62 with CAPSENSE evaluation kit開發(fā)板?(以下簡(jiǎn)稱PSoC 6
    的頭像 發(fā)表于 04-13 01:35 ?1779次閱讀

    【PSoC?62 for RT-Thread】RT-Thread攜手英飛凌舉辦嵌入式網(wǎng)絡(luò)應(yīng)用開發(fā)沙龍,圓滿落幕!

    題的線下沙龍!此次沙龍聚焦使用英飛凌科技PSoC62在RT-Thread Studio平臺(tái)上進(jìn)行開發(fā),并結(jié)合智能數(shù)據(jù)網(wǎng)關(guān)動(dòng)手培訓(xùn)為開發(fā)者們提供了深入了解英飛凌與學(xué)習(xí)使用RT-Thread的良好機(jī)會(huì),吸引了近150余名工程師報(bào)名參
    的頭像 發(fā)表于 12-14 16:25 ?515次閱讀
    【PSoC?<b class='flag-5'>62</b> for RT-Thread】RT-Thread攜手<b class='flag-5'>英飛凌</b>舉辦嵌入式網(wǎng)絡(luò)應(yīng)用開發(fā)沙龍,圓滿落幕!

    STM32定時(shí)器,當(dāng)PSC為1時(shí),定時(shí)器時(shí)鐘CK_CNT和CK_PSC的頻率為什么是一樣的

    時(shí)鐘周期和狀態(tài)變化的概念 首先,時(shí)鐘信號(hào)是一種周期性的信號(hào),比如CK_PSC信號(hào)。一個(gè)完整的時(shí)鐘周期包括從一個(gè)上升沿(信號(hào)從低電平變?yōu)楦唠娖剑╅_始,經(jīng)過(guò)高電平階段、下降沿(信號(hào)從高電平變?yōu)榈碗娖?/div>
    的頭像 發(fā)表于 10-23 17:30 ?193次閱讀