請(qǐng)問ch573有沒有單獨(dú)的rtc喚醒demo?

請(qǐng)問ch573有沒有單獨(dú)的rtc喚醒demo?是在不使用ble的情況下。

573/571/582三款的rtc喚醒是相同的套路嗎?

附件的例子請(qǐng)查收

icon_rar.gifCH573_PM_RTC例程.zip



typedef enum

{

Period_0_125_S = 0,// 0.125s 周期

Period_0_25_S,// 0.25s 周期

Period_0_5_S,// 0.5s 周期

Period_1_S,// 1s 周期

Period_2_S,// 2s 周期

Period_4_S,// 4s 周期

Period_8_S,// 8s 周期

Period_16_S,// 16s 周期

}RTC_TMRCycTypeDef;?


RTC喚醒的周期最大只能設(shè)置到16s嗎?我大概需要1-5min的rtc喚醒,這樣是無法做到嗎?


可以,根據(jù)例子設(shè)置喚醒時(shí)間即可,例子里面的計(jì)數(shù)單位是1/32K


沒太理解這個(gè)計(jì)數(shù)單位是1/32K。

我在源碼里看見了一個(gè)

#define? RB_RTC_TMR_MODE? ? 0x07? ? ? ? ? ? ? ? ? ? ? // RWA, RTC timer mode: 000=0.125S, 001=0.25S, 010=0.5S, 011=1S, 100=2S, 101=4S, 110=8S, 111=16S

?這個(gè)應(yīng)該是設(shè)置的周期,那么我只需要設(shè)置這個(gè)周期就可以自定義喚醒周期了?

這個(gè)周期是只能偶數(shù)的設(shè)置嗎?設(shè)置RTC_TMRFunCfg( 9 );就是64s喚醒?



例子只是列舉了幾種常用的喚醒時(shí)間,如果自定義時(shí)間的話,根據(jù)函數(shù)參數(shù)設(shè)定就可以
image.png
參數(shù)t和時(shí)間的換算關(guān)系是? Time=t*1/32768(s)


有兩個(gè)疑問請(qǐng)教?

1:RTC_TMRFunCfg(9); 設(shè)置不了64秒喚醒???

2:

void RTC_IRQHandler(void)

{

? ? R8_RTC_FLAG_CTRL = (RB_RTC_TMR_CLR | RB_RTC_TRIG_CLR);

? ? RTCTigFlag = 1;

? ? PRINT("battery_task\r\n");??

? ? // if (RTC_GetITFlag(RTC_TMR_EVENT))

? ? // {

? ? // ? ? PRINT("battery_task\r\n");

? ? // ? ? RTC_ClearITFlag(RTC_TMR_EVENT);

? ? // }

}

為什么if (RTC_GetITFlag(RTC_TMR_EVENT))中斷標(biāo)志位里面不能執(zhí)行?直接在外面就可以執(zhí)行?



RTC功能有觸發(fā)功能和定時(shí)功能,我們一般使用的是定時(shí)功能,相應(yīng)的時(shí)間使用也已經(jīng)封裝好了。

使用觸發(fā)功能設(shè)置喚醒,單位是32768,64s喚醒就寫為RTC_TRIGFunCfg(2097152);

獲取標(biāo)志或者清除標(biāo)志應(yīng)該是對(duì)觸發(fā)事件標(biāo)志處理,上面寫的應(yīng)該是定時(shí)事件。



void rtc_wake_init(void)

{

? RTC_TMRFunCfg(2097152);//2097152/32768=64秒

? PFIC_EnableIRQ(RTC_IRQn);

? PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_RTC_WAKE, Edge_LongDelay );

}

郺t鬳ry_task_awke

郺t鬳ry_task_awke

郺t鬳ry_task_awke

鈇ttery_taskawke

鈇ttery_task_awke

郮W杫_task_awke

郮W杫_task_awke

郮W杫_task_awke

鈇ttery_task_awke

郺趑ery_task_awke

郮W桖_taskawke

郺ttery_task_awke

郺t鬳ry_task_awke

郺t鬳ry_task_awke

郮W杫task_awke

郺ttery_task_awke

醁W桖_task_awke

郮W杫_task_awke

郺ttery_taskawke


還是不行 只要設(shè)置超過16秒? 喚醒時(shí)間就有問題 ?


使用觸發(fā)的方式需要調(diào)用這個(gè)函數(shù)RTC_TRIGFunCfg(32768*20); 另外在中斷中仍需調(diào)用它,清除的中斷標(biāo)志也不同,?RTC_ClearITFlag(RTC_TRIG_EVENT);附件基于573可供參考。

icon_rar.gifPM_RTC.zip



2022.06.14_16.41.54.jpg

請(qǐng)問為什么每次啟動(dòng)ADC采樣? ?ADC口都會(huì)有一個(gè)上升電壓? 反而采不準(zhǔn)?


void adc_init(void)

{

? ? gpio_mode_cfg(MOTOR_ADC_PIN, GPIO_ModeIN_Floating);

? ? gpio_mode_cfg(BAT1_ADC_PIN, GPIO_ModeIN_Floating);

? ? gpio_mode_cfg(BAT2_ADC_PIN, GPIO_ModeIN_Floating);


? ? ADC_ExtSingleChSampInit(SampleFreq_3_2, ADC_PGA_0);

? ? RoughCalib_Value = ADC_DataCalib_Rough(); // 用于計(jì)算ADC內(nèi)部偏差,記錄到全局變量 RoughCalib_Value中

}


采用普通采樣和DMA采樣都是如此


ADC采集需注意相應(yīng)的增益,選擇相應(yīng)的公式,計(jì)算測(cè)量值時(shí)可以實(shí)際測(cè)量一下VINTA的引腳電壓。

在測(cè)量兩端電壓時(shí)可以將粗調(diào)等校準(zhǔn)關(guān)閉后嘗試。

提供一個(gè)帖子參考:

求助CH573F的ADC配置為-6db時(shí)誤差較大的問題 - 沁恒微電子社區(qū) (wch.cn)


請(qǐng)問有串口(串口0)中斷喚醒CH573的設(shè)置例子嗎?現(xiàn)在調(diào)試的內(nèi)部RTC中斷可以喚醒MCU,但串口中斷喚不醒?


芯片都睡眠了,串口是不跑的,可以設(shè)置gpio喚醒來實(shí)現(xiàn)。


意思是CH573硬件內(nèi)部本身就不支持外部串口喚醒?


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频