求助TMOS系統(tǒng)最小的調(diào)度示例
#define?DEBUG?1
#include?"CH57x_common.h"
#include?"HAL.h"
#include?"CH57xBLE_LIB.h"

static?tmosTaskID?MyTaskID?=?INVALID_TASK_ID;

__attribute__((section(".highcode")))
void?Main_Circulation()
{
??while(1){
????TMOS_SystemProcess(?);
??}
}

tmosEvents?MyTask_ProcessEvent(tmosTaskID?task_id,?tmosEvents?events)?{
????PRINT("MyTask_ProcessEvent?invoked?\n");
????return?0;
}

int?main()?{
????bStatus_t?s;

????SetSysClock(?CLK_SOURCE_PLL_60MHz?);

????GPIOA_SetBits(?GPIO_Pin_9?);
????GPIOA_ModeCfg(?GPIO_Pin_8,?GPIO_ModeIN_PU?);
????GPIOA_ModeCfg(?GPIO_Pin_9,?GPIO_ModeOut_PP_5mA?);
????UART1_DefInit();
????PRINT(?"Start?@ChipID=%02X\n",?R8_CHIP_ID?);

????HAL_Init();
????MyTaskID?=?TMOS_ProcessEventRegister(MyTask_ProcessEvent);

//????s?=?tmos_set_event(MyTaskID,?0U);
????s?=?tmos_start_task(MyTaskID,?0U,?1U);
????PRINT("s=%x\n",?s);
????Main_Circulation();
}

這是我參考藍(lán)牙部分的代碼 寫的 TMOS 最小的例子, 這里面有幾個(gè)問題

1. 如果我用?

s?=?tmos_set_event(MyTaskID,?0U);

則 tmos_set_event 返回是 3, 按頭文件的說法應(yīng)該是不成功,這里不知道為什么, 用 tmos_start_task 返回是 0

2.?

串口中沒有打印

Start?@ChipID=73
s=0
MyTask_ProcessEvent?invoked

串口僅打印


Start @ChipID=73

s=0


這和預(yù)期不符, 說明對應(yīng)的處理函數(shù)沒有被調(diào)度到


我這樣寫代碼是正確的嗎? 如果不正確應(yīng)該怎么寫?

寫錯了。
第一步是要注冊任務(wù)ID?
image.png
這樣返回的是任務(wù)ID,每個(gè)ID下可以設(shè)16個(gè)子任務(wù),2字節(jié)的變量,每個(gè)位可以建立一個(gè)獨(dú)立的子任務(wù),定義見下圖
image.png

任務(wù)ID和任務(wù)標(biāo)號分配后,就可以啟動任務(wù)了,下面是立即啟動任務(wù),還有延時(shí)啟動的,具體看LIB.H里面,代碼跟蹤下,函數(shù)有注釋。
image.png
任務(wù)觸發(fā)后就可以到指定的函數(shù)里面運(yùn)行了,如下
image.png


image.png

我這里面有注冊任務(wù)ID呀


你看下,這個(gè)函數(shù)聲明,參數(shù)的意思,你的函數(shù)參數(shù)確認(rèn)下是不是有問題。

image.png

舉例如下

image.png


image.png

這個(gè)是從 TMOS 使用說明, EVENT 我看就是一個(gè) UINT16 啊? 第三個(gè)參數(shù)我寫 0 應(yīng)該是立刻調(diào)度?

沒想到問題出在哪里


由于 TMOS 的代碼部分是黑盒, 發(fā)現(xiàn)只要調(diào)了?CH57X_BLEInit 就能正常工作, 為啥?



?CH57X_BLEInit 中調(diào)用了BLE_LibInit函數(shù),在BLE_LibInit中調(diào)用了 TMOS_Init函數(shù)

這里包括注冊睡眠回掉函數(shù)分配ram,初始化狀態(tài)機(jī).

其中TMOS_Init 函數(shù)暫時(shí)沒有放出來.


tmos 需要先初始化,后面的tmos的相關(guān)調(diào)度 才會正常



TMOS 代碼會開放嗎, 現(xiàn)在對著黑盒 debug, 太痛苦了.


用 Debugger 下程序和寫入 Flash 啟動 OS 部分的行為也有點(diǎn)不大一樣, 現(xiàn)在比較迷糊了.


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

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