1. 程式人生 > >【深入實踐ucos-ii】第一個示例程式程式碼

【深入實踐ucos-ii】第一個示例程式程式碼

本篇部落格演示了ucos-ii的第一個示例程式程式碼,程式碼簡單易懂,意在帶領讀者快速實戰ucos-ii程式設計。

很多同學玩過微控制器,微控制器在裸機環境下,一般是一個main函式,裡面有個大while迴圈,然後程式就在這個大while中迴圈執行。在這個程式碼中你將會看到,兩個大while迴圈“同時”執行。這種執行已經不同於我們微控制器下程式簡單的裸跑了。

且看如下程式碼:

/****************************************
project:ucos-ii demo
author:arvik
csdn:http://blog.csdn.net/u012819339
email:
[email protected]
*****************************************/
#include "SystemConfig.h" /* 定義任務堆疊*/ OS_STK App1Task_Stk[App1Task_StkSize]; OS_STK App2Task_Stk[App2Task_StkSize]; int main(void) { OSInit(); // 系統初始化 OSTaskCreate(App1Task, (void *)0, &App1Task_Stk[App1Task_StkSize-1], App1Task_Prio);//建立其他任務App1Task
OSTaskCreate(App2Task, (void *)0, &App2Task_Stk[App2Task_StkSize-1], App2Task_Prio);//建立其他任務App2Task OSStart(); // 啟動ucos-ii return 0; } /* App1Task */ void App1Task(void *p_arg) { p_arg = p_arg; while(1) { printf("this is App1task!\n"); OSTimeDlyHMSM(0, 0, 3, 0); /* 任務排程*/
} } /* App2Task */ void App2Task(void *p_arg) { p_arg = p_arg; while(1) { printf("this is App2task!\n"); OSTimeDlyHMSM(0, 0, 2, 0); } }

SystemConfig.h內容如下

#ifndef SYSTEM_CONFIG_H
#define SYSTEM_CONFIG_H

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>
#include <assert.h>
#include <includes.h>       

/****** TASK PRIORITIES ******/
#define App1Task_Prio 14  //App1Task的優先順序
#define App2Task_Prio 16  ////App2Task的優先順序

#define OS_TASK_TMR_PRIO 5 

/****** TASK STACK SIZES ******/
#define App1Task_StkSize 320
#define App2Task_StkSize 320

extern void App1Task(void *p_arg);
extern void App2Task(void *p_arg);

#endif

我們會發現,“this is App1task!”會按照2秒每次的頻率迴圈列印,“this is App2task!”會按照3秒每次的頻率迴圈列印。這樣我們“同時”執行了兩個任務。

至此,ucos-ii的第一個示例程式已經跑起來了。

相關推薦

深入實踐ucos-ii第一示例程式程式碼

本篇部落格演示了ucos-ii的第一個示例程式程式碼,程式碼簡單易懂,意在帶領讀者快速實戰ucos-ii程式設計。 很多同學玩過微控制器,微控制器在裸機環境下,一般是一個main函式,裡面有個大while迴圈,然後程式就在這個大while中迴圈執行。在這個程式

Struts2學習1第一完整程式

1、開發環境:Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1) 2、下載Struts2,網站:http://struts.apache.org。下載版本:struts-2.3.24.3-a

HDFS API編程第一應用程序的開發-創建文件夾

顯示 common 三個參數 @param throws res sts 技術 註釋 /** * 使用Java API操作HDFS文件系統 * 關鍵點: * 1)創建 Configuration * 2)獲取 FileSystem * 3)...剩下的就是 HDFS API

springboot系列之03-使用IDEA完成第一示例程式

未經允許,不得轉載 原作者:字母哥部落格 本文完整系列出自:springboot深入淺出系列 一、使用IntellijIDEA建立第一個spring boot 專案 通常只有專業版付費版才預設帶有Spring Initialzr功能,如果你的IDEA沒有這個選項。可以參照本文末尾《附文:Spring In

Spring boot第一項目 Springboot + mysql + hibernate

tle jpa serializa pla factor sta ant plain hibernate 今天公司要做一個小項目,好久沒碰項目了(刷題好累。。。),聽說spring boot很火,決定試一試。暫時就從mysql裏面讀數據好了,使用hiberant

手把手擼一個腳手架第一步, 建立第一命令

WTF 不知道腳手架是啥? 那抓緊惡補一下前端基礎把兄die, 相信不久的以後你就會回來的. ps: 本文檔案操作基於 bash, mac 同學直接用 terminal 或 iterm 即可, win 使用者推薦使用 git bash 腳手架, 源自於建築行業, 通俗的講就是一個專

劍指Offer第一只出現一次的字元

題目連結 題目描述 在一個字串(0<=字串長度<=10000,全部由字母組成)中找到第一個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫). 分析:簡單計數並

一次過Lintcode 74. 第一錯誤的程式碼版本

程式碼庫的版本號是從 1 到 n 的整數。某一天,有人提交了錯誤版本的程式碼,因此造成自身及之後版本的程式碼在單元測試中均出錯。請找出第一個錯誤的版本號。 你可以通過 isBadVersion 的介面來判斷版本號 version 是否在單元測試中出錯,

例項-0基礎微信小程式開發入門1.2-第一程式

【開啟征程】開啟微信web開發者工具,點選小程式專案:點選右下角的“+”號,將建立快速模板前面的勾去掉然後選擇體驗小程式,目錄隨意,點選確定,即可建立一個全空的小程式專案啦。【建立最基本的目錄結構和檔案】在開始建立之前,我們有必要了解一下最基本的東西:​JSON 是一種資料格

微信小程式——建立自己的第一程式

註冊 微信小程式註冊    https://mp.weixin.qq.com/wxopen/waregister?action=step1    填寫賬號資訊  作為登入帳號,請填寫未被微信公眾平臺註冊,未被微信開放平臺註冊

深入SpringBoot 1.3.5 第一Boot應用的啟動流程

一、 快速建立一個Boot應用 使用maven <parent> <groupId>org.springframework.boot</groupId> <artifactId>spri

c語言第一只出現一次的字元題目:在字串中找出第一只出現一次的字元

// 第一個只出現一次的字元題目:在字串中找出第一個只出現一次的字元。 // 如輸入“abaccdeff”,則輸出’b’。 #include <stdio.h> #include <string.h> char find_one(ch

D3.js 入門系列 --- 1 第一程式HelloWorld

下面開始用D3.js處理第一個簡單問題,先看下面的程式碼:  <html> <head> <meta charset="utf-8"&g

Linux探索之旅第一部分第三課:測試並安裝Ubuntu

u盤 nco 過程 sans ubunt windows u盤啟動盤 系統 .com 內容簡單介紹 1、第一部分第三課:測試並安裝Ubuntu 2、第一部分第四課預告:磁盤分區 測試並安裝Ubuntu 大家好,經過前兩個比較偏理論(是否

深入Java虛擬機之八:Java垃圾收集機制

狀態 nio 得到 man tsp ngs fin 純粹 概念 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/18076173 對象引用 Java中的垃圾回收一般是在Java堆中進行,因為堆中幾乎存

深入Java虛擬機之七:Javac編譯與JIT編譯

p s ots 基本 關鍵字 目前 關註 script 和數 語言 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/18009455 編譯過程 不論是物理機還是虛擬機,大部分的程序代碼從開始編譯到最終轉化

大話存儲II學習筆記(2章), SSD

ssd 中一 logs 什麽是 直接 範圍 平衡 機械 ive 我們知道機械硬盤最大的缺點在於,尋道時間比較長,也就是不適合隨機小塊IO。所以這幾年固態存儲大行其道,因為它對任何地址訪問的開銷都相等,節省了機械尋道時間,所以隨機IO性能很好。 當前的SSD硬盤,單塊SSD的

大話存儲II學習筆記(15章),文件級集群系統

做的 引入 規模 載器 meta 之前 sys not 集群 【大話存儲II】學習筆記(15章),塊級集群存儲系統裏面分析的主要是塊集群系統,同樣文件級存儲也可以集群化。 因為NAS系統的前端網絡是以太網,速度比較低,導致NAS主要用於一些非關鍵業務中,比如文件共享。但是一

大話存儲II學習筆記(15章),集群概論

但是 利用 參與 工作量 mar 容易 mage markdown 節點 隨著應用程序對服務器、存儲系統的系統要求越來越高,單臺設備有時已經無法滿足需求了,此時我們有兩種方法可以解決: 使用性能更高的機器,但是成本以及維護成本非常高,而且不見得適合所有的應用。 多臺設備聯

大話存儲II學習筆記(15章),NoSQL

cnblogs 高並發 屏蔽 圖片 一定的 mon 是把 類型 擴容 互聯網運營商(NSP)的數據中心是數據最集中的地方,也正是因為海量的數據存儲與訪問,傳統的存儲架構已經無法滿足了現有的需求。 比如每秒幾十萬次的隨機IOPS、每秒10GB的流量,一般都需要使用高端存儲,當