嵌入式系統(tǒng)設計報告_第1頁
嵌入式系統(tǒng)設計報告_第2頁
嵌入式系統(tǒng)設計報告_第3頁
嵌入式系統(tǒng)設計報告_第4頁
嵌入式系統(tǒng)設計報告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、嵌入式操作系統(tǒng)報告 學 院 專 業(yè) 題 目 LED、按鍵、LCD、MPU6050任務切換 姓名學號 指導教師 日 期 2016 年 12月 10 日 摘要隨著電子技術(shù)的發(fā)展,嵌入式技術(shù)成為當今計算機應的主流技術(shù),嵌入式操作系統(tǒng)是嵌入式系統(tǒng)發(fā)展到一定階段的產(chǎn)物,是為了滿足日益復雜的嵌入式系統(tǒng)設計的要求而產(chǎn)生的。隨著微處理器功能的不斷提升,嵌入式操作系統(tǒng)的應用范圍也變得越來越強大。對基于特定嵌入式操作系統(tǒng)上的軟件設計研究己成為了近年來的熱點,井且對于嵌入式操作系統(tǒng)在實際工程中的推廣應用有著重要的意義。本文使用蒲公英STM32F103開發(fā)板,利用Keil軟件創(chuàng)建工程。移植UCOS系統(tǒng)內(nèi)核,應用C語言

2、編寫程序。完成了四個任務的創(chuàng)建和相互調(diào)度:LED燈、按鍵、LCD屏幕顯示、MPU6050加速度傳感器數(shù)據(jù)采集,通過按鍵更改LED燈的顯示效果、通過實時采集MUP6050傳感器的數(shù)據(jù),顯示在LCD上,并用信號量和消息郵箱進行任務之間的信息傳遞。關鍵詞:UCOS-ii、嵌入式系統(tǒng)、STM32F103、keilABSTRACT With the development of electronic technology, embedded technology has become the mainstream technology in the computer, the embedded oper

3、ating system is the product of a certain stage of development of embedded system, is produced in order to meet the design requirements of the embedded system is becoming more complicated. With the continuous improvement of the function of the microprocessor, the application of embedded operating sys

4、tem becomes more and more powerful. The research of software design based on specific embedded operating system has become a hot spot in recent years, and it has important significance for the application of embedded operating system in practical engineering.In this paper, the use of dandelion STM32

5、F103 development board, the use of Keil software to create the project. Transplant UCOS system kernel, the application of C language program. Complete the construction of four tasks and scheduling: LED lights, buttons, LCD display screen, MPU6050 acceleration sensor data acquisition, change the LED

6、lamp through the button display, through real-time acquisition of MUP6050 sensor data, display on the LCD, and the task of transmission of information between signal and message mailbox.Key words: UCOS-ii, embedded system, STM32F103, KeilKey words:目錄1 緒論11.1 研究的目的與意義11.2 嵌入式系統(tǒng)概述11.3 嵌入式操作系統(tǒng)特征及發(fā)展現(xiàn)狀22

7、 u C/OS-II簡介32.1 u C/OS-II特點32.2 u C/OS-II內(nèi)核分析32.2.1 臨界段32.2.2 任務定義及狀態(tài)42.2.3 任務控制塊(OS TCB)52.2.4 任務調(diào)度53 開發(fā)環(huán)境73.1 開發(fā)環(huán)境73.1.1 Keil簡介73.1.2 keil特點73.2 硬件環(huán)境83.2.1 蒲公英32F平臺簡介83.2.2 32F103引腳圖83.2.3 蒲公英32F103開發(fā)板特點94 程序分析104.1 程序流程圖104.2 代碼分析114.2.1 lcd顯示功能114.2.2 按鍵功能114.2.3 LED燈控制功能124.2.4 加速度傳感功能134.2.5

8、在屏幕上顯示傳感數(shù)字135 5運行結(jié)果145.1 程序代碼截圖145.2 實物圖156 心得體會15參考文獻16致謝161 緒論1.1 研究的目的與意義隨著單片機技術(shù)的普及和日益成熟,嵌入式系統(tǒng)已經(jīng)無處不在、無時不刻地影響著人們的生活了。各種嵌入式產(chǎn)品的功能不斷增強、精確程度不斷提高、響應時間逐漸縮短,可靠性不斷提高且成本不斷降低。嵌入式系統(tǒng)是以應用為中心、以計算機技術(shù)為基礎、軟件硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。簡言之,嵌入式系統(tǒng)是根據(jù)應用的要求,將操作系統(tǒng)和功能軟件集成于計算機硬件系統(tǒng)之中,從而實現(xiàn)了軟件和硬件一體化的計算機系統(tǒng)。嵌入式系統(tǒng)一

9、般不提供與終端用戶交互的手段,具有小巧、高度自動化和響應速度快等特點。從7年代第一臺微處理器的出現(xiàn)到現(xiàn)在,嵌入式系統(tǒng)的發(fā)展己經(jīng)有二十幾年的歷史了,隨著以計算機技術(shù),通訊技術(shù)為主的信息技術(shù)的迅速發(fā)展和互聯(lián)網(wǎng)技術(shù)的廣泛應用,嵌入式系統(tǒng)的發(fā)展己顯示出微型化和專業(yè)化的趨勢。正是由于嵌入式系統(tǒng)的種種優(yōu)越性,嵌入式系統(tǒng)自產(chǎn)生那天起便開始迅速的發(fā)展,如今嵌入式系統(tǒng)己成為計算機領域的一個重要的組成部分。1.2 嵌入式系統(tǒng)概述嵌入式系統(tǒng)(Embedded system),是一種“完全嵌入受控器件內(nèi)部,為特定應用而設計的專用計算機系統(tǒng)”,根據(jù)英國電氣工程師協(xié)會( U.K. Institution of Elect

10、rical Engineer)的定義,嵌入式系統(tǒng)為控制、監(jiān)視或輔助設備、機器或用于工廠運作的設備。與個人計算機這樣的通用計算機系統(tǒng)不同,嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求的預先定義的任務。由于嵌入式系統(tǒng)只針對一項特殊的任務,設計人員能夠?qū)λM行優(yōu)化,減小尺寸降低成本。嵌入式系統(tǒng)通常進行大量生產(chǎn),所以單個的成本節(jié)約,能夠隨著產(chǎn)量進行成百上千的放大。嵌入式系統(tǒng)是用來控制或者監(jiān)視機器、裝置、工廠等大規(guī)模設備的系統(tǒng)。國內(nèi)普遍認同的嵌入式系統(tǒng)定義為:以應用為中心,以計算機技術(shù)為基礎,軟硬件可裁剪,適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統(tǒng)。通常,嵌入式系統(tǒng)是一個控制程序存儲在

11、ROM中的嵌入式處理器控制板。事實上,所有帶有數(shù)字接口的設備,如手表、微波爐、錄像機、汽車等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是由單個程序?qū)崿F(xiàn)整個控制邏輯。 嵌入式系統(tǒng)的核心是由一個或幾個預先編程好以用來執(zhí)行少數(shù)幾項任務的微處理器或者單片機組成。與通用計算機能夠運行用戶選擇的軟件不同,嵌入式系統(tǒng)上的軟件通常是暫時不變的;所以經(jīng)常稱為“固件”。1.3 嵌入式操作系統(tǒng)特征及發(fā)展現(xiàn)狀 嵌入式操作系統(tǒng)井不是簡單嵌入的操作系統(tǒng),它與通常意義上的操作系統(tǒng)有一定的區(qū)別。嵌入式操作系統(tǒng)負責嵌入式系統(tǒng)的全部軟、硬資源的分配、調(diào)度工作,控制井協(xié)調(diào)井發(fā)活動,它必須體現(xiàn)其所在系統(tǒng)的

12、特征,能夠通過裝卸某些模塊來達到系統(tǒng)所要求的功能。與通用的操作系統(tǒng)相比,嵌入式操作系統(tǒng)具有如下一些特征: (1)良好的移植性。由于嵌入式設備硬件平臺的多樣性,CPU芯片的快速更新,嵌入式操作系統(tǒng)要求具有更好的硬件適應性。嵌入式操作系統(tǒng)一般都支持廣泛的運行平臺,同時對每種微處理器都提供相應的編譯器、連接器、調(diào)試器和加載工具以及性能測試工具等一系列工具鏈,從而形成從開發(fā)、調(diào)試到運行的一體化支持; (2)小巧,要求占用更小的硬件資源。嵌入式系統(tǒng)所能提供的資源有限,所以嵌入式操作系統(tǒng)必須做的小巧以滿足嵌入式系統(tǒng)硬件的限制。況且由于嵌入式系統(tǒng)自身的特點,它所需要的模塊和功能更小巧,一些在桌面操作系統(tǒng)中的

13、功能在嵌入式操作系統(tǒng)也就不適用了;(3)實時性。大多數(shù)嵌入式系統(tǒng)工作在實時性要求很高的環(huán)境中,這就要求嵌入式操作系統(tǒng)必須將實時性作為一個很重要的方面來考慮。在信息時代,人們必須在有效的時間內(nèi)對到來的信息進行處理,從而為進一步的決策分析爭取時間。所以嵌入式操作系統(tǒng)必須體現(xiàn)一定的實時性;(4)可裝載和卸載。由于嵌入式系統(tǒng)需要根據(jù)應用的要求進行裝卸,所以嵌入式操作系統(tǒng)也必須能夠適應應用的需要進行裝卸,對嵌入式操作系統(tǒng)的各個部分進行優(yōu)化和刪除。(5)固化代碼。在嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)和應用軟件被固化在嵌入式系統(tǒng)計算機的ROM中。輔助存儲器在嵌入式系統(tǒng)中使用的很少,因此嵌入式操作系統(tǒng)的文件管理功能

14、應該被拆卸,取而代之的是各種內(nèi)存文件系統(tǒng);(6)弱交互性。大多數(shù)嵌入式系統(tǒng)的工作過程不需要人的干預。嵌入式操作系統(tǒng)的用戶接口一般不提供操作命令,它通過系統(tǒng)調(diào)用命令向用戶程序提供服務。(7)強穩(wěn)定性。嵌入式系統(tǒng)一旦開始運行就不需要人的過多干預。井且很多的嵌入式系統(tǒng)工作在很惡劣的工業(yè)生產(chǎn)的環(huán)境下。在這種條件下,要求嵌入式操作系統(tǒng)具有較高的穩(wěn)定性;(8)統(tǒng)一的接口。隨著各種各樣的嵌入式操作系統(tǒng)的出現(xiàn)人們有必要為嵌入式系統(tǒng)提供的接口進行約定,從而為嵌入式應用軟件的設計者提供統(tǒng)一的服務接口,為嵌入式軟件的運行提供平臺的無關性。正是由于嵌入式操作系統(tǒng)所具有的這些鮮明的特點才使得其在嵌入式系統(tǒng)的開發(fā)中得到了

15、廣泛的應用,近年來全球嵌入式操作系統(tǒng)的發(fā)展空間更是正隨著互聯(lián)網(wǎng)、通訊和計算機市場的飛速增長而不斷的擴大。但另一個方面,盡管國外許多公司也有對此類系統(tǒng)幾十年的開發(fā)經(jīng)驗,可到目前為止在嵌入式系統(tǒng)上井無一個統(tǒng)一的國際標準,這就使得市場上出現(xiàn)了各種不同種類的嵌入式操作系統(tǒng),這些操作系統(tǒng)各有特色,其采用的體系結(jié)構(gòu)和技術(shù)手段也各有優(yōu)點,應用范圍也不盡相同。2 u C/OS-II簡介2.1 u C/OS-II特點 u C/OS- II是由美國人Jean J. Labrosse編寫的一個公開源代碼的,微內(nèi)核嵌入式實時操作系統(tǒng),其實時性能和內(nèi)核的健壯性早已經(jīng)在大量的實際應用中得到了證實。它是由u C/OS升級而

16、來的,并且做了很大的改進。下面簡單介紹一下它的特點: (1)公開源代碼,且源代碼中有詳細的注釋,源代碼清晰易讀且結(jié)構(gòu)協(xié)調(diào)、組織有序,對實時操作系統(tǒng)的基本原理做了非常詳細的解釋,簡單易懂。 (2)移植性好,u C/OS- II的源代碼絕大部分是用ANSI C編寫的,與微處理器相關的部分是用匯編語言寫的,使得u C/OS- II便于移植到其它處理器上。 (3)可裁剪,用戶可以根據(jù)自己的寄存器空間的大小和實際需要,只保留u C/OS- II中應用程序需要的那些系統(tǒng)服務。 (4)穩(wěn)定性和可靠性高,抗干擾能力強。 (5) u C/OS- II完全是占先式的實時內(nèi)核。這意味著u C/OS- II總是運行就

17、緒狀態(tài)下優(yōu)先級最高的任務。 (6) u C/OS- II每個任務的優(yōu)先級必須是不同的,這意味著 C/OS- II不支持時間片輪轉(zhuǎn)調(diào)度法(Round-robin Scheduling ) Z o (7) u C/OS- II的函數(shù)調(diào)用與服務的執(zhí)行時間具有其可確定性。 (8)u C/OS- II提供很多系統(tǒng)服務,例如郵箱、消息隊列、信號量、塊大小固定的內(nèi)存的申請與釋放、時間相關函數(shù)等。2.2 u C/OS-II內(nèi)核分析u C/OS- II內(nèi)核負責管理各個任務,或者說為每一個任務分配CPU時間及其相關的資源,并且負責任務之間的通信。內(nèi)核提供的基本服務是任務切換。使用實時內(nèi)核可以大大簡化應用系統(tǒng)的設計

18、,因為實時內(nèi)核允許將應用分成若干個任務,由實時內(nèi)核來管理它們。接下來從幾方面對u C/OS-II的內(nèi)核作出介紹:2.2.1 臨界段 代碼的臨界段也稱為臨界區(qū),指處理時不可分割的一段代碼。一旦這部分代碼開始執(zhí)行,則不允許任何中斷。為確保臨界段代碼的執(zhí)行,在進入臨界段之前要關中斷,而臨界段代碼執(zhí)行完以后要立即開中斷。和其它內(nèi)核一樣,u C/OS- II為了處理臨界段代碼需要關中斷,處理完畢后再開中斷。這使得u C/OS- II能夠避免同時有其它任務或中斷服務進入臨界段代碼。關中斷的時間是實時內(nèi)核開發(fā)商應提供的最重要的指標之一,因為這個指標影響用戶系統(tǒng)對實時事件的響應性。 u C/OS- II努力使

19、關中斷時間降至最短,但就使用u C/OS- II而言,關中斷的時間很大程度上取決于微處理器的架構(gòu)以及編譯器所生成的代碼質(zhì)量。微處理器一般都有關中斷/開中斷指令,用戶使用的C語言編譯器必須有某種機制能夠在C中直接實現(xiàn)關中斷/開中斷地操作。u C/OS- II定義兩個宏來關中斷和開中斷,以便避開不同C編譯器廠商選擇不同的方法來處理關中斷和開中斷。 u C/OS- II中的這兩個宏調(diào)用分別是:OS ENTER CRITICAL()和OS_ EXITes CRITICAL() 。2.2.2 任務定義及狀態(tài) u C/OS- II的任務是一個無限的循環(huán),也稱作一個線程,是一個簡單的程序,該程序可以認為CP

20、U完全只屬該程序自己。一個任務可以有返回類型,有形式參數(shù)變量,但是任務是絕不會返回的。當任務完成以后,任務可以自我“刪除”,即u C/OS- II不理會這個任務了,這個任務的代碼也不會再運行。實時應用程序的設計過程,包括如何把問題分割成多個任務,每個任務都是整個應用的某一部分,每個任務被賦予一定的優(yōu)先級,有它自己的一套CPU寄存器和自己的棧空間。u C/OS- II可以管理多達64個任務,其中空任務(IDLE)和統(tǒng)計任務(STATISTICS)被系統(tǒng)占用。任務在建立時必須被賦予不同的優(yōu)先級,優(yōu)先級的數(shù)值越小,則表示任務的優(yōu)先級越高。u C/OS- II總是運行進入就緒狀態(tài)的優(yōu)先級最高的任務。

21、多任務運行的實現(xiàn)是靠CPU在許多任務之間轉(zhuǎn)換、調(diào)度,CPU只有一個,輪番服務于一系列任務中的某一個。多任務運行使CPU的利用率得到最大的發(fā)揮,并使應用程序模塊化。在實時應用中,多任務化的最大特點是,開發(fā)人員可以將很復雜的應用程序?qū)哟位J褂枚嗳蝿?,應用程序?qū)⒏菀自O計與維護。u C/OS- II中任務的狀態(tài)包括運行態(tài)、就緒態(tài)、等待狀態(tài)、睡眠態(tài)和中斷服務態(tài)。圖2-1是u C/OS- II控制下的任務狀態(tài)轉(zhuǎn)換過程。在任一給定的時刻,任務的狀態(tài)一定是這五種狀態(tài)之一。2.2.3 任務控制塊(OS TCB) 任務控制塊(OS TCB)是一個數(shù)據(jù)結(jié)構(gòu),是用來描述任務的一些屬性,包括任務標識號、任務優(yōu)先級、

22、任務狀態(tài)信息、任務控制信息以及堆棧信息等。u C/OS- II中是采用任務控制塊的方式對任務進行管理的。任務控制塊在任務被建立時被初始化,當任務的CPU使用權(quán)被剝奪時,u C/OS- II用任務控制塊來保存該任務的狀態(tài)。而當任務重新得到CPU使用權(quán)時,任務控制塊能恢復任務到被中斷前的狀態(tài),確保任務從中斷的那一點繼續(xù)執(zhí)行下去。任務控制塊全部駐留在RAM中。應用程序中可以有的最多任務數(shù)(OS一AXes TASKS )是在文件OS一FCzH中定義的。這個最多任務數(shù)也是u C/OS- II分配給用戶程序的最多任務控制塊的數(shù)目。將OS MAX TASKS的數(shù)目設置為用戶應用程序?qū)嶋H需要的任務數(shù)可以減小R

23、AM的需求量。所有的任務控制塊都是放在任務控制塊列表數(shù)組OSTCBTbI中的。在 u C/OS- II初始化的時候,所有任務控制塊OS一CBs被鏈接成單向空任務鏈表。當任務一旦建立,空任務控制塊指針OSTCBFreeList指向的任務控制塊便賦給了該任務,然后OSTCBFreeList的值調(diào)整為指向下鏈表中下一個空的任務控制塊。一旦任務被刪除,任務控制塊就還給空任務鏈表。2.2.4 任務調(diào)度 在u C/OS- II中,最多支持63個任務,每個任務只能有獨立的優(yōu)先級,即不能有2個相同優(yōu)先級的任務,系統(tǒng)也不支持時間片輪番調(diào)度。因此,Rhealstone方法的定義,uC/OS- II的實時性主要體現(xiàn)

24、在搶占(Preemption)按照時間和中斷等待時間(Latency ) u C/OS- II是一種基于優(yōu)先級調(diào)度的占先式內(nèi)核。在系統(tǒng)運行的過程中,可能發(fā)生任務調(diào)度的時機有: (1)對任務操作的時候,包括:創(chuàng)建或者刪除任務,掛起或者恢復任務,改變?nèi)蝿諆?yōu)先級。 (2)任務主動使用OSTimeDly函數(shù)延時的時候。 (3)發(fā)送(或者等待)信號量、郵箱、消息的時候。 (4)中斷函數(shù)返回的時候。中斷往往會使一個更高優(yōu)先級任務處于就緒狀態(tài),包括使用信號量等或者直接恢復某個任務。所以,在系統(tǒng)退出中斷的時候,就需要判斷是否有更高優(yōu)先級的任務處于就緒狀態(tài),如果有,則需要進行任務調(diào)度。 (5)給系統(tǒng)的任務調(diào)度器

25、解鎖的時候。在大多數(shù)情況下,u C/OS- II中斷級的任務調(diào)度是按照如圖2-2所示的流程進行的。其中Tr為系統(tǒng)的中斷等待時間。Tp為系統(tǒng)的搶占時間。Ts為系統(tǒng)的中斷響應與查找的時間,主要包括中斷入口程序的執(zhí)行,注冊在系統(tǒng)中的中斷向量的查找等。Td為執(zhí)行中斷處理所用的時間。Tw為系統(tǒng)判斷并查找處于就緒狀態(tài)下優(yōu)先級最高的任務和中斷級任務切換的時間。而Tc則可以認為滿足:0Tc成系統(tǒng)的最長關中斷時間。當有多個中斷產(chǎn)生的時候,如果因為中斷的優(yōu)先級低或者系統(tǒng)不允許中斷嵌套,則u c/os- II的中斷級任務調(diào)度將按照如圖2-3所示的流程進行。 u C/OS- II是一個實時性比較強的多任務操作系統(tǒng),很

26、容易評估出系統(tǒng)調(diào)度的最長響應時間。每一個任務都是一個死循環(huán)。u C/OS-II V2.86 可以擴展至支持256個任務,除去系統(tǒng)自帶的優(yōu)先級被設置為最低的空閑任務 OSTask Idle()和一個u C/OS-II提供的統(tǒng)計任務,用戶可以自己制定的任務多達254個。u C/OS-II內(nèi)核通過一個被稱為任務控制塊(OS_TCB)的數(shù)據(jù)結(jié)構(gòu)來完成任務的建立、調(diào)度、執(zhí)行和刪除操作。u C/OS-II中每個任務都具備五種狀態(tài),當內(nèi)核進行一次調(diào)度或者發(fā)生相關的事件時,任務就會在這五種狀態(tài)之間轉(zhuǎn)換,如圖2-4所示。圖2.4 uC/OS-II的任務就緒表3 開發(fā)環(huán)境3.1 開發(fā)環(huán)境3.1.1 Keil簡介

27、Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(Vision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。3.1.2 keil特點Keil C51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性

28、、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),更為便捷。3.2 硬件環(huán)境3.2.1 蒲公英32F平臺簡介STM32F1系列屬于中低端的32位ARM微控制器,該系列芯片是意法半導體(ST)公司出品,其內(nèi)核是Cortex-M3。該系列芯片按片內(nèi)Flash的大小可分為三大類:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。芯片集成定時器,CAN,ADC,SPI,I2C,USB,UART,等多種功能。其結(jié)構(gòu)和硬件框圖如圖3-1,3-2所示:圖3-1蒲公英32F103開發(fā)板 圖3-2 32F103硬件框圖3.2.2 32F103引腳圖

29、(1)LED燈電路圖3.3 LED輸出端口圖3.4 LED電路(2)按鍵電路圖3.5 按鍵輸出端口 圖3.6按鍵電路(3)LCD電路圖3.7 LCD輸出電路 圖3.8LCD外圍電路(4)MPU6050電路圖3.9 MPU6050外圍電路3.2.3 蒲公英32F103開發(fā)板特點1、ARM最新的Cortex-M3內(nèi)核。優(yōu)先級搶占的中斷控制器,支持中斷自動嵌套,硬件完成現(xiàn)場保護與恢復,中斷嵌套時,只需保護和恢復一次現(xiàn)場,即使在恢復現(xiàn)場的時候再次中斷也不需要再次保護現(xiàn)場,只需6個clk的調(diào)整時間。2、外設的引腳居然可以重影射3、RAM可以通過位綁定技術(shù)按位來訪問4 程序分析4.1 程序流程圖 4-1程

30、序整體流程圖4.2 代碼分析4.2.1 lcd顯示功能void TaskMessageLCD(void *pParam)err=OS_ERR_NONE; 定義異常,為傳參數(shù)做準備PUTword8x16(0,0,23,1);/xPUTchar16x16(0,1,2); /軸PUTword8x16(1,0,24,1);/yPUTchar16x16(1,1,2); /軸PUTword8x16(2,0,25,1);/zPUTchar16x16(2,1,2); /軸PUTword8x16(3,0,6,0);/gPUTword8x16(3,1,18,0);/sPUTword8x16(3,2,25,0);/

31、zPUTword8x16(3,3,25,0);/zPUTchar16x16(3,3,0); /高PUTchar16x16(3,4,1);/尚代碼解析:通過PUTchar16x16(a,b,c)定義字符,通過改變a,b的數(shù)值來改變數(shù)據(jù)在LCD顯示屏上的位置(a為X軸坐標,b為Y軸坐標)。改變C的排位。PUTword8x16(a,b,c,d)為定義字母,通過改變A,B 的數(shù)據(jù)來改變在LCD顯示屏上的位置,通過改變C的數(shù)值來獲取A-Z的26個英文字母字模并顯示,改變D在決定數(shù)據(jù)的大小寫,0為小寫字母,1為大寫字母。4.2.2 按鍵功能void UserTaskKEY(void *pParam)key

32、_i=0;/把按鍵置0MyEventSem=OSSemCreate(0);/創(chuàng)建信號量,為了信號之間的通信做準備 while(1)OSTimeDly(wait1); /延時為1個時鐘滴答if(!GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_15)/按下按鍵來控制pin=15口OSSemPost(MyEventSem);代碼解析:設置一個按鍵,用while語句設置一個時鐘延時,if語句控制pin=15口。4.2.3 LED燈控制功能void UserTaskLED(void *pParam)key_mark=0;/設置key_mark變量err=0;/異常為0 OST

33、imeDly(wait1); /延時為1個時鐘滴答while(1)/循環(huán)OSSemPend(MyEventSem,0,&err); /*電平翻轉(zhuǎn)*/if(key_mark=0)/如果變量為0GPIO_SetBits(GPIOE, GPIO_Pin_4);/pin4,5口LED燈不亮GPIO_SetBits(GPIOE, GPIO_Pin_5);key_mark=1;/標志位elseGPIO_ResetBits(GPIOE, GPIO_Pin_4); /pin4,5口LED燈亮GPIO_ResetBits(GPIOE, GPIO_Pin_5); key_mark=0; /標志位代碼解析:設置ke

34、y mark變量,key mark為布爾量,通過電平的反轉(zhuǎn)改變,用if語句判斷key mark的值控制LED燈的亮滅。4.2.4 加速度傳感功能void TaskMessageMPU(void *pParam) err=OS_ERR_NONE; scount=1; myMBox=OSMboxCreate(&scount);/創(chuàng)建郵箱 OSMboxPend(myMBox,0,&err); /請求消息,若不存在則堵塞 while(1) OSTimeDly(wait2);/ 延時1個時鐘滴答scount=GetData(ACCEL_XOUT_H)/16384;/將X傳感器的值存儲到scount中OSMboxPost(myMBox,&scount);/將消息發(fā)送接收郵箱里scount=GetData(ACCEL_YOUT_H)/16384;OSMboxPos

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論