如何在開啟HAL_SLEEP時(shí)通過(guò)GPIO中斷讓CH57X_LowPower及時(shí)退出?

你好,我這邊需要讓CH573在外部中斷到來(lái)時(shí)及時(shí)和外部芯片通訊,之前沒(méi)有開啟HAL_SLEEP,通訊非常正常,加上數(shù)據(jù)準(zhǔn)備的時(shí)間,也就37us就可以響應(yīng)了。

無(wú)sleep響應(yīng)速度.png


但是加上了HAL_SLEEP后就不能正常工作了。

有sleep.png

程序配置了下降沿中斷,還調(diào)用了PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE, Edge_LongDelay );

我在CH57X_LowPower的入口和所有return前面加入IO操作來(lái)檢查CH57X_LowPower的執(zhí)行時(shí)間,發(fā)現(xiàn)GPIO中斷可以快速被執(zhí)行,但是中斷執(zhí)行完后CH57X_LowPower不會(huì)退出,約11ms后才退出,讓主循環(huán)可以運(yùn)轉(zhuǎn),向TMOS發(fā)事件。但是過(guò)這么久外設(shè)已經(jīng)超時(shí),無(wú)法正常工作。


請(qǐng)問(wèn)有沒(méi)有辦法讓中斷觸發(fā)后立刻退出CH57X_LowPower并返回主循環(huán)?我測(cè)試過(guò)使用Edge_ShortDelay,但系統(tǒng)會(huì)進(jìn)入重啟循環(huán),暫時(shí)沒(méi)搞清什么原因。


嘗試,把sleep.c里面的 下面如圖框框的代碼,使用簡(jiǎn)單的delay代替

image.png


非常感謝,我仔細(xì)研究了http://m.findthetime.net/index.php/bbs/thread-81865-1.html?。確實(shí)是在這個(gè)Idle花了時(shí)間,即使IO喚醒,這個(gè)IDLE也會(huì)睡到預(yù)設(shè)時(shí)間。


還有個(gè)小問(wèn)題:


非RTC喚醒的情況下,函數(shù)的返回值應(yīng)該是什么?http://m.findthetime.net/index.php/bbs/thread-73139-1.html? 里提到返回值應(yīng)該是告訴協(xié)議棧是否真的睡眠過(guò),那么請(qǐng)問(wèn)睡了但是沒(méi)睡足,應(yīng)該算哪種?



但凡進(jìn)入過(guò)sleep, 都應(yīng)該return 0,?

建議是無(wú)論如何都return 0, 因?yàn)檫@部分處理的時(shí)間是非常短的,us級(jí)別


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

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