欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3009|回復: 1
打印 上一主題 下一主題
收起左側

μC/OS-III實驗環境建立

[復制鏈接]
跳轉到指定樓層
樓主
ID:407679 發表于 2018-10-10 18:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一、實驗目的
掌握建立μC/OS-III實驗環境的方法。
初步了解μC/OS-III任務管理函數。
初步了解μC/OS-III的結構以及與應用程序之間的關系。
二、實驗內容
建立VS2012或VS2013或VS2017開發平臺。
創建兩個任務并交替運行,在屏幕上顯示當前運行狀態。
三、實驗過程、結果
1.實驗步驟及內容
(1)搭建VS平臺;
圖3.1 VS2015平臺界面
Micrium_Win32_OS3的對應版本是VS2013,Micrium_Win32_Kernels的對應版本是VS2017,而我的版本是VS2015,故而都嘗試了一下。
VS2015運行Micrium_Win32_Kernels時報錯界面如下:
圖3.2 報錯界面
       具體報錯內容為:
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版本對應的包進行編譯執行。
VS2015打開Micrium_Win32_OS3時顯示如下界面:
圖3.2 升級詢問界面
       因此,點擊確定后對原本的VC++編譯器和庫進行升級即可,VS平臺搭建成功。
(2)創建任務
CPU總是不斷地在各個任務間切換,為了下次跳回來, CPU在跳走的同時,要保護好現場,故而需要用到堆棧。
給任務分配堆棧:
所以每當我們創建一個任務,我們都需要給這個任務分配一個堆棧。
#define  APP_TASK_STK_SIZE                             256u
(CPU_STK_SIZE)APP_TASK_STK_SIZE
創建任務用到OSTaskCreate()函數
    OSTaskCreate((OS_TCB     *)&AppStartTCB,   //任務控制塊指針
        (CPU_CHAR   *)"AppStart",            //任務名稱
        (OS_TASK_PTR)AppStart,                //任務代碼指針
        (void       *)0,                     //傳遞給任務的參數parg
        (OS_PRIO)APP_START_PRIO,              //任務優先級
        (CPU_STK    *)&AppStartStk[0],        //任務堆;刂
        (CPU_STK_SIZE)APP_TASK_STK_SIZE / 10u, //堆棧剩余警戒線,使用90%堆棧時溢出檢查
        (CPU_STK_SIZE)APP_TASK_STK_SIZE,       //堆棧大小
        (OS_MSG_QTY)0u,                      //可接收的最大消息隊列數
        (OS_TICK)0u,                         //時間片輪轉時間
        (void       *)0,                     //任務控制塊擴展信息
        (OS_OPT)(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),  //檢查堆棧以及堆棧值清零
        (OS_ERR     *)&err);                 //返回值
其中,#define  APP_START_PRIO                       7u
表示該任務的優先級是7,數字越小,表示任務的優先級越高。
任務創建完畢,編寫AppStart。
在AppStart創建二個簡單的任務:TaskA和TaskB,設置AppStart 1秒執行一次,TaskA 3秒執行一次,TaskB 5秒執行一次,并進行打印任務優先級和系統時間。
其中用OSTimeDlyHMSM()函數進行延時。
(3)編譯執行,在屏幕上顯示運行狀態;
實驗結果分析:
可以看出,Start任務優先級為7,每隔一秒鐘執行一次;TaskA任務優先級為8,每隔3秒執行一次;TaskB任務優先級為9,每隔5秒運行一次。任務交替運行,符合預期結果。



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

使用道具 舉報

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

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

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