日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

曾经的UCOSii

發布時間:2025/3/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 曾经的UCOSii 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我只是來分享自己的UCOS學習資料的,,順便叨叨,自己是看著任哲的書一點一點學的,,,

自己大四的時候學的UCOSii,,但是好像學了之后,就只有一次真正使用過它,,在使用網絡模塊ENC28J60的時候.....

對于當時自己還沒學的時候,一直很納悶什么是操作系統哈,,是什么原因讓人們去編寫操作系統程序,,到底是為了解決什么問題,而寫的操作系統

其實最貼近人的例子就是自己的電腦啦,,,和自己的沒有操作系統的單片機程序(俗稱"裸機")做比較

自己的電腦能一邊看視頻,一邊聽歌,一邊打字,一邊聊天,一邊下東西...........感覺是不是同時進行

而沒有操作系統的單片機程序,就是平時寫的程序,,,,算啦,,舉個例子

假設哈,,我需要寫一個處理許多事情的程序

如果在沒有操作系統的單片機上做,,也可以做,,,不過呢!有個麻煩的地方就是,,為了使各個功能都能及時(假設響應速度為1us)的響應

我們做程序的時候就要想法,把有延時的地方不能真的延時,要能立即執行下面的功能,,,,,,,,,,,就在想有沒有更好地方式來實現呢

對了單片機里面的程序主要是根據寄存器的各項執行 ,,,,,就在想要是這樣就好了

?

?

?

?

?

要是有個程序哈,,我只要把我想要的各個功能寫好,并且寫成一個函數一個函數的,然后呢這個程序有個功能,我只要把我寫的每個函數的函數地址傳給它,,然后就不用我管了

然后整個程序就像上面那樣執行多好啊

所以操作系統就來拯救我了

先上菜

#include "includes.h"unsigned char task1_STK[60];//任務1堆棧的初始化 unsigned char task2_STK[60];//任務2堆棧的初始化void task1(void *date) reentrant; void task2(void *date) reentrant;void main(void) {InitTimer0();InitSerial();InitSerialBuffer();OSInit();OSTaskCreate(task1, (void *)0, &task1_STK[0], 8);OSTaskCreate(task2, (void *)0, &task2_STK[0], 9);OSStart();}void task1(void *date) reentrant {date = date;while(1){PrintStr("A\r"); // OSTimeDly(10);//延時以時鐘節拍算OSTimeDlyHMSM(0, 0, 1, 0); //等待1秒 延時按時分秒毫秒算 } }void task2(void *date) reentrant {date = date;while(1){PrintStr("Y\r");OSTimeDlyHMSM(0, 0, 1, 0); //等待1秒 } }

?

?

?

OSTaskCreate(task1, (void *)0, &task1_STK[0], 8);
這句就是創建一個任務的函數,,,就是把咱寫的

?

這兩個函數哈,,利用UCOS提供的OSTaskCreate()函數,使咱這兩個函數實現一開始想的那樣執行

看一下這個函數

?

?

這個數組哈有個新名字

?那個數組里面就是這樣子

?

多個任務就是這樣子,,,,

?對于裁剪.............這個您學了就知道了.........感覺名字挺高大上,,可能對于小系統而言吧比較簡單點

?

我把自己學習的歷程給大家,,,我的歷程里面一般都很簡簡單單不過我當時是

關于Proteus ?與 Keil 聯調 ?,,就是能夠一步一步的執行,看程序運行,,

把proteus安裝目錄下 VDM51.dll(搜一下吧)文件復制到Keil安裝目錄的 \C51\BIN 目錄中。

如果沒有自己在網上下一個,,或者我下面有百度云分享,里面有

?

?

修改keil安裝目錄下 Tools.ini文件,在C51字段加入TDRV9=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver"),保存 注意:不一定要用TDRV9,根據原來字段選用一個不重復的數值就可以了。引號內的名字隨意

?

進入KEIL的project菜單option for target '工程名'。在DEBUG選項中右欄上部的下拉菜選中 Proteus VSM Monitor-51 Driver。 在進入seting,如果同一臺機IP 名為127.0.0.1,如不是同一臺機則填另一 臺的IP地址。端口號一定為8000 注意:可以在一臺機器上運行keil,另一臺中運行proteus進行遠程仿真

?

?

?

?

?

?

?下面是自己當年學的點點滴滴,,會發現缺一個 ?內存分配,,,,,,這是因為學到消息隊列的時候,自己為畢業證的事情分心了,然后堅持了一個星期想考研.........最后

還是被興趣給打敗了................對于內存分配,我看了老衲五木,關于網絡Lwip的源碼時介紹的挺好的,,親們可以百度一下,,這個人寫文章也挺有意思的,,,也是開頭先 扯一點別的

?

?鏈接:http://pan.baidu.com/s/1boUHKQF 密碼:jpjy

?

總結

以上是生活随笔為你收集整理的曾经的UCOSii的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。