關(guān)于CH579M+RT-Thread : RTC從Sleep模式喚醒數(shù)次后,喚醒失敗

問題:如標題所示,不知道有沒有遇到類似問題的朋友?


RT-Thread版本 : 4.0.3


應(yīng)用場景:?

使用RT-Thread自帶的PM組件,每間隔1分鐘進行一次喚醒,喚醒處理完后馬上休眠(一般是1S左右就處理完畢),剛運行是非常正常的,一般是過了一個晚上,就發(fā)現(xiàn)不再喚醒,一直處于休眠狀態(tài),因SWD調(diào)試接口進入Sleep后會被關(guān)閉,所以不好debug


進入休眠的方法是調(diào)用rt_pm_release(PM_SLEEP_MODE_NONE)

退出休眠的方法是調(diào)用rt_pm_request(PM_SLEEP_MODE_NONE)


rtc時鐘喚醒api如下:

void?rtc_timer_start(uint32_t?timeout)
{
	//RTC_InitTime(?2020,?1,?1,?0,?0,?0?);
	//RTC_TRIGFunCfg(timeout);
	uint32_t?tmp,irq_status;

??SYS_DisableAllIrq(?(PUINT32)&irq_status?);
??tmp?=?RTC_GetCycle32k();
	timeout+=tmp;
??if(?(timeout?<?tmp)?||?((timeout?-?tmp)?<?30)?){?//?檢測睡眠的最短時間
//????SYS_RecoverIrq(?irq_status?);
//????return?;
		timeout?=?tmp?+?32768;
??}
??RTC_SetTignTime(?timeout?);
??SYS_RecoverIrq(?irq_status?);
}

void?rtc_timer_stop()
{
	
}

uint32_t?rtc_timer_get_tick(void)
{
	return?RTC_GetCycle32k();
}


代碼貼上來排版有點亂了...


求共享一下PM代碼


先等我解決問題吧,不然代碼會有bug


有個問題,32K計數(shù)的最大時間不是0xFFFFFFFF,是0xA8C00000

計數(shù)要判斷是否溢出
??? time += WAKE_UP_RTC_MAX_TIME;
??? if( time > 0xA8C00000 )?? time -= 0xA8C00000;
??? RTC_SetTignTime( time );


噢,我有加溢出判斷,但好像加的不對,馬上修改測試下~謝謝


芯片可以可以配置成:在進入Sleep后,SWD調(diào)試接口依然打開 嗎?

之前用過有些芯片可以,方便debug.


swd用的高頻時鐘,sleep后高頻時鐘停了,所以sleep是 swd是無效的。


你好、這個休眠喚不醒的問題解決了嗎


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

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