使用了 CH573EVT\EVT\EXAM\BLE\Central 例程, 在設(shè)置事件執(zhí)行的超時(shí)時(shí)間較大的時(shí)候似乎不會執(zhí)行, 比如添加下圖中的
tmos_start_task(?halTaskID,?HAL_TEST_EVENT,?1600?);
但是將參數(shù)改小, 比如16的時(shí)候
tmos_start_task(?halTaskID,?HAL_TEST_EVENT,?16?);????//?添加一個(gè)測試任務(wù)
能正常進(jìn)回調(diào)
之后為了測試回調(diào)超時(shí)準(zhǔn)確性, 在硬件層事務(wù)處理函數(shù)中更改下部分
使用串口查看工具, 開啟時(shí)間戳顯示, 發(fā)現(xiàn)并不是很對
雖然給的是超時(shí)28ms, 但是實(shí)際上是?2.66秒
算了兩個(gè), 給的參數(shù)和實(shí)際時(shí)間的比值基本差不多
那開頭的
tmos_start_task(?halTaskID,?HAL_TEST_EVENT,?1600?);
跑不了其實(shí)應(yīng)該是不對的, 只是系統(tǒng)時(shí)基不對, 給的參數(shù)為1600, 但是實(shí)際并不是1秒, 按照上方的比例關(guān)系實(shí)際為94.999秒
實(shí)際也確實(shí)在運(yùn)行較長時(shí)間后進(jìn)事件處理
測試了一下RTC, 在死循環(huán)發(fā)送秒
__attribute__((section(".highcode"))) __attribute__((noinline))?void Main_Circulation() { ????static?uint16_t?s; ????while?(1) ????{ ????????TMOS_SystemProcess(); ????????RTC_GetTime(0,?0,?0,?0,?0,?&s); ????????PRINT("%u?",?s); ????} }
發(fā)送的數(shù)據(jù)為RTC的秒, 這個(gè)數(shù)據(jù)在經(jīng)過非常長的時(shí)間后變成了1
看到一個(gè)帖子, 感覺是同樣的問題
http://m.findthetime.net/bbs/thread-72642-1.html
我目前手里沒有ch573, 不好說在573上是否能正常使用
藍(lán)牙從機(jī)例程上測試沒有問題, TMOS的系統(tǒng)時(shí)鐘是挺準(zhǔn)的