一直在用但並沒用深入的去了解,就好像你有一個網友平時經常聊條,但是彼此不瞭解各自的內心世界,這是一種尷尬只是一種不負責任。再加上感覺自己要老了記性也大不如以前了,好記性不如爛筆頭,還是寫下來吧,以後不懂了不用問別人問問自己就錨索頓開了。
剩下的時日不多了,趕緊搞起來吧。OSTaskCreate() 嗨man,知道幹嘛的吧。
void OSTaskCreate (OS_TCB *p_tcb, //任務控制塊指針
CPU_CHAR *p_name, //命名任務
OS_TASK_PTR p_task, //任務函數
void *p_arg, //傳遞給任務函數的參數
OS_PRIO prio, //任務優先級
CPU_STK *p_stk_base, //任務堆棧基地址
CPU_STK_SIZE stk_limit, //堆棧的剩餘限值
CPU_STK_SIZE stk_size, //堆棧大小
OS_MSG_QTY q_size, //任務消息容量
OS_TICK time_quanta, //時間片
void *p_ext, //任務擴展
OS_OPT opt, //選項
OS_ERR *p_err) //返回錯誤類型
參數解釋, *p_tcb 任務控制塊指針,看名字很高大上很難直白的理解。 OS_TCB 就是一個結構體 struct os_tcb {};可以查看內核源碼,這個結構體主要記錄了與任務相關的信息數據 如結構體首地址存放了 CPU_STK *StkPtr; 當前棧頂指針。拿stm32f103來講這個結構體就是一個內存空間在IRAM1指示的地址空間裏,定義的位置不一樣會影響運行時的內存地址也就是影響棧頂指針。我們要寫的函數就是第三個參數就是任務,燒寫程序後任務就放在IROM1的地址空間裏。