關(guān)于CH582M freeRTOS的若干問題

有以下以后望解答:

  1. 如何實現(xiàn)休眠? 休眠后如何喚醒?

    目前嘗試用裸機例程中的休眠函數(shù),僅LowPower_Shutdown(0); 可以正常睡眠并且成功喚醒。其他方式均不能喚醒。但此方式喚醒后task會莫名其妙的不執(zhí)行或者出其他什么問題了,兩個task原先是串口打印的,喚醒后沒有輸出。但在創(chuàng)建task的函數(shù)前放一個延時,喚醒后又可以正常半秒鐘。

  2. freertos是否有可能用于ble開發(fā)? 如果有可能,是否有開發(fā)計劃?

  3. 是否有可能改為硬件壓棧?后續(xù)有無開發(fā)計劃?

低功耗休眠可以考慮使用LowPower_Sleep;
freertos可以用于ble開發(fā),但目前沒有出BLE的freertos單獨庫的計劃。你可以創(chuàng)建一個比IDLEtask高一優(yōu)先級的任務(wù),用來一直運行TMOS_SystemProcess;
CH583在使用RTOS時無法使用硬件壓棧,所以不可能。


LowPower_Sleep我試了,無法喚醒


你可以看看EVT里面PM的例子,演示了4種低功耗模式下IO喚醒的寫法。


我就是直接復(fù)制的EVT里面的代碼。?現(xiàn)象就是上面描述的那樣。

目前嘗試用裸機例程中的休眠函數(shù),僅LowPower_Shutdown(0); 可以正常睡眠并且成功喚醒。其他方式均不能喚醒。但此方式喚醒后task會莫名其妙的不執(zhí)行或者出其他什么問題了,兩個task原先是串口打印的,喚醒后沒有輸出。但在創(chuàng)建task的函數(shù)前放一個延時,喚醒后又可以正常半秒鐘。


自己頂一下


你在使用藍(lán)牙功能開啟睡眠,直接宏定義HAL_SLEEP開啟睡眠就可以了。喚醒是藍(lán)牙TMOS任務(wù)處理的,有任務(wù)來臨則喚醒??梢詤⒖枷旅娴乃吆瘮?shù)。

可以先使用PM的例程看一下睡眠是如何跑的,然后使用peripheral的例程結(jié)合藍(lán)牙再做嘗試。

1.png

1.png


可能我表述不太清除。睡眠測試是在evt中freertos的例程中做的,我只是新建了一個task用于定時休眠,其他的沒有動。休眠代碼是直接從evt的PM例程中復(fù)制的。出現(xiàn)了我帖子中第一條的問題。


freeRTOS中自帶IDLE TASK,通過設(shè)置宏configUSE_TICKLESS_IDLE不為0,啟用對應(yīng)的函數(shù)接口portSUPPRESS_TICKS_AND_SLEEP,然后通過宏定義將portSUPPRESS_TICKS_AND_SLEEP定義為你自己的睡眠函數(shù)。


參考藍(lán)牙工程里面的睡眠,是因為有些模塊電源睡眠時是關(guān)閉的,RAM是否保持也是有區(qū)別的,你需要根據(jù)自己的情況來決定如何睡眠。


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

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