曾经的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
?
總結
- 上一篇: tableView的用法具体解释
- 下一篇: 交换机的简介及数据通信过程,子网掩码及路