找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2933|回復: 1
打印 上一主題 下一主題
收起左側(cè)

μC/OS-III實驗環(huán)境建立

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:407679 發(fā)表于 2018-10-10 18:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一、實驗?zāi)康?br /> 掌握建立μC/OS-III實驗環(huán)境的方法。
初步了解μC/OS-III任務(wù)管理函數(shù)。
初步了解μC/OS-III的結(jié)構(gòu)以及與應(yīng)用程序之間的關(guān)系。
二、實驗內(nèi)容
建立VS2012或VS2013或VS2017開發(fā)平臺。
創(chuàng)建兩個任務(wù)并交替運行,在屏幕上顯示當前運行狀態(tài)。
三、實驗過程、結(jié)果
1.實驗步驟及內(nèi)容
(1)搭建VS平臺;
圖3.1 VS2015平臺界面
Micrium_Win32_OS3的對應(yīng)版本是VS2013,Micrium_Win32_Kernels的對應(yīng)版本是VS2017,而我的版本是VS2015,故而都嘗試了一下。
VS2015運行Micrium_Win32_Kernels時報錯界面如下:
圖3.2 報錯界面
       具體報錯內(nèi)容為:
1>------ 已啟動生成: 項目: OS3, 配置: Debug Win32 ------
1>C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets(57,5):error MSB8020: The build tools for v141 (Platform Toolset = 'v141') cannot befound. To build using the v141 build tools, please install v141 buildtools.  Alternatively, you may upgrade tothe current Visual Studio tools by selecting the Project menu or right-clickthe solution, and then selecting "Retarget solution".
========== 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========
按照提示我進行了重新生成解決方案,并沒有解決問題。于是嘗試用VS2015對VS2012版本對應(yīng)的包進行編譯執(zhí)行。
VS2015打開Micrium_Win32_OS3時顯示如下界面:
圖3.2 升級詢問界面
       因此,點擊確定后對原本的VC++編譯器和庫進行升級即可,VS平臺搭建成功。
(2)創(chuàng)建任務(wù)
CPU總是不斷地在各個任務(wù)間切換,為了下次跳回來, CPU在跳走的同時,要保護好現(xiàn)場,故而需要用到堆棧。
給任務(wù)分配堆棧:
所以每當我們創(chuàng)建一個任務(wù),我們都需要給這個任務(wù)分配一個堆棧。
#define  APP_TASK_STK_SIZE                             256u
(CPU_STK_SIZE)APP_TASK_STK_SIZE
創(chuàng)建任務(wù)用到OSTaskCreate()函數(shù)
    OSTaskCreate((OS_TCB     *)&AppStartTCB,   //任務(wù)控制塊指針
        (CPU_CHAR   *)"AppStart",            //任務(wù)名稱
        (OS_TASK_PTR)AppStart,                //任務(wù)代碼指針
        (void       *)0,                     //傳遞給任務(wù)的參數(shù)parg
        (OS_PRIO)APP_START_PRIO,              //任務(wù)優(yōu)先級
        (CPU_STK    *)&AppStartStk[0],        //任務(wù)堆;刂
        (CPU_STK_SIZE)APP_TASK_STK_SIZE / 10u, //堆棧剩余警戒線,使用90%堆棧時溢出檢查
        (CPU_STK_SIZE)APP_TASK_STK_SIZE,       //堆棧大小
        (OS_MSG_QTY)0u,                      //可接收的最大消息隊列數(shù)
        (OS_TICK)0u,                         //時間片輪轉(zhuǎn)時間
        (void       *)0,                     //任務(wù)控制塊擴展信息
        (OS_OPT)(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),  //檢查堆棧以及堆棧值清零
        (OS_ERR     *)&err);                 //返回值
其中,#define  APP_START_PRIO                       7u
表示該任務(wù)的優(yōu)先級是7,數(shù)字越小,表示任務(wù)的優(yōu)先級越高。
任務(wù)創(chuàng)建完畢,編寫AppStart。
在AppStart創(chuàng)建二個簡單的任務(wù):TaskA和TaskB,設(shè)置AppStart 1秒執(zhí)行一次,TaskA 3秒執(zhí)行一次,TaskB 5秒執(zhí)行一次,并進行打印任務(wù)優(yōu)先級和系統(tǒng)時間。
其中用OSTimeDlyHMSM()函數(shù)進行延時。
(3)編譯執(zhí)行,在屏幕上顯示運行狀態(tài);
實驗結(jié)果分析:
可以看出,Start任務(wù)優(yōu)先級為7,每隔一秒鐘執(zhí)行一次;TaskA任務(wù)優(yōu)先級為8,每隔3秒執(zhí)行一次;TaskB任務(wù)優(yōu)先級為9,每隔5秒運行一次。任務(wù)交替運行,符合預(yù)期結(jié)果。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-10-11 00:16 | 只看該作者
補圖即可獲得100+黑幣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表