【深入實踐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的流量,一般都需要使用高端存儲,當