《嵌入式系統(tǒng)課程設(shè)計課件》由會員分享,可在線閱讀,更多相關(guān)《嵌入式系統(tǒng)課程設(shè)計課件(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,2.1 基于ARM核的LPC2106介紹,51單片機內(nèi)部結(jié)構(gòu),ARM7TDMI-S 處理器;,128k 字節(jié)片內(nèi)Flash 程序存儲器,具有ISP 和IAP 功能。Flash 編程時間:1ms 可,編程512 字節(jié),扇區(qū)擦除或整片擦除只需400ms。64/32/16K 字節(jié)靜態(tài)RAM,(LPC2106/2105/2104),。,極小
2、封裝:TQFP48。,向量中斷控制器控制中斷;,雙UART,其中一個帶有完全的調(diào)制解調(diào)器接口。,具有I,2,C串行接口和 SPI 串行接口;,兩個定時器,分別具有4 路捕獲/比較通道;,多達6 路輸出的PWM 單元;,實時時鐘;看門狗定時器;,通用I/O 口;,CPU 操作頻率可達60MHz;雙電源:CPU 操作電壓范圍:,1.65V1.95V(1.8V8.3%),I/O 電壓范圍:3.0V3.6V(3.3V10%);,兩個低功耗模式:空閑和掉電;,片內(nèi)PLL 允許CPU 以最大速度運行,可以在超過整個晶振操作頻率范圍的情況下使用。,2.2 LPC2106管腳介紹,2.3 LPC2106的I/
3、O端口設(shè)置,寄存器PINSEL0和PINSEL1的設(shè)置。,LPC2106的I/O口全都是3功能服用端口,也就是說即可用作普通輸入輸出端口,又用作第2或第3種功能。設(shè)計人員可根據(jù)需要設(shè)置兩個32位特殊功能寄存器PINSEL0和PINSEL1。PINSEL0對應引腳P0.0P0.15,PINSEL1對應引腳P0.16P0.31。都是寄存器中用兩位來完成1根引腳的功能設(shè)置。,(2)GPIO方向寄存器設(shè)置,當管腳配置為GPIO 模式時,可使用該寄存器控制管腳的方向。任意管腳的方向位的設(shè)置必須與管腳功能一致。,輸出置1寄存器IOSET,當管腳配置為GPIO 輸出模式時,可使用該寄存器從管腳輸出高電平。寫
4、入1 使對應管腳輸出高電平。寫入0 無效。如果一個管腳被配置為輸入或第二功能,寫IOSET 無效。,輸出清零寄存器IOCLR,當管腳配置為GPIO 輸出模式時,可使用該寄存器從管腳輸出低電平。寫入1 使對應管腳輸出低電平。寫入0 無效。如果一個管腳被配置為輸入或第二功能,寫IOCLR 無效。,GPIO引腳值寄存器IOPIN,該寄存器提供GPIO引腳的值。反映了外部環(huán)境對引腳的影響。,2.4 流水燈程序示例,#include config.h,#define LED1CON 0 x000003ff /*P0.0p0.9輸出*/,void delay(uint32 n),while(n-);,in
5、t main(void),uint32 i;,while(1),PINSEL0=0 x00000000;,PINSEL1=0 x00000000;,IODIR=0 x000003ff;,for(i=0;i11;i+),IOCLR=0 x000003ff;,IOSET=1i;,delay(5000);,delay(5000);,return(0);,CODE32,AREA vectors,CODE,READONLY,ENTRY,;interrupt vectors,;中斷向量表,Reset,LDR PC,ResetAddr,LDR PC,UndefinedAddr,LDR PC,SWI_Addr
6、,LDR PC,PrefetchAddr,LDR PC,DataAbortAddr,DCD 0 xb9205f80,LDR PC,PC,#-0 xff0,LDR PC,FIQ_Addr,ResetAddr DCD ResetInit,UndefinedAddr DCD Undefined,SWI_Addr DCD SoftwareInterrupt,PrefetchAddr DCD PrefetchAbort,DataAbortAddr DCD DataAbort,Nouse DCD 0,IRQ_Addr DCD 0,FIQ_Addr DCD FIQ_Handler,ResetInit,BL
7、InitStack,BL TargetResetInit,B _main,一、基礎(chǔ)知識,1.1 操作系統(tǒng)的功能和作用,計算機硬件系統(tǒng),操作系統(tǒng)(WINDOWS、LUNIX等),應用軟件(如WORD、,PHOTOSHOP等),系統(tǒng)軟件(如編譯程序、,匯編程序、數(shù)據(jù)庫等),圖1.1 操作系統(tǒng)在計算機中的地位,操作系統(tǒng)層通常是最靠近硬件,層的軟件層,主要完成計算機硬件,資源的調(diào)度和分配、信息的儲存和,保護以及并發(fā)活動的協(xié)調(diào)和控制。,從應用程序員的角度看,操作,系統(tǒng)是計算機硬件系統(tǒng)與應用程序,的接口,看到和使用的只是一些由,操作系統(tǒng)提供的函數(shù)。,1.2 嵌入式操作系統(tǒng)的特點,嵌入式硬件系統(tǒng),嵌入式操作
8、系統(tǒng)(UCOS-、WINCE,UCLUNIX等),嵌入式系統(tǒng)的應用軟件,圖,1.2 嵌入式操作系統(tǒng)在嵌入式系統(tǒng)中的地位,微型化。保證應用的前提下,,規(guī)模越小越好。,可裁剪。嵌入式操作系統(tǒng)提供,的各個功能模塊可以讓用戶根據(jù),需要選擇。,易移植。應在不做大量修改的,情況下穩(wěn)定運行在不同的平臺。,實時性可靠性好。,1、uC/OS-II內(nèi)核具有可搶占的,實時多任務調(diào)度,功能,2、提供了許多系統(tǒng)服務,如信號量、消息隊列、郵箱、內(nèi)存管理、時間函數(shù)等,3、這些功能可以根據(jù)不同的需求進行裁減。,4、,可從ucos-ii網(wǎng)站上獲得全部源碼及其在各種體系結(jié)構(gòu)平臺上的移植范例。,1.3 uC/OS-II的特點,全世
9、界有數(shù)百種產(chǎn)品在應用:,醫(yī)療器械,移動電話,路由器,工業(yè)控制,GPS 導航系統(tǒng),智能儀器,更多,二、實際應用,(實時溫度的采集控制),溫度傳感器,A/D轉(zhuǎn)換(ADC0808),LPC2106,數(shù)碼管顯示,外界溫度,電壓信號,數(shù)字信號,2.1 實時溫度采集的硬件框圖,啟動按鈕,2.2 實時溫度采集的硬件接線圖,1、任務1啟動按鈕(按鍵識別),IO_Init();,while(1),while(IOPIN,IO_Init();,while(IOPIN,IOCLR=0 x0000ffFF;,任務切換,轉(zhuǎn)換結(jié)束輸出信號(轉(zhuǎn)換結(jié)束標志),高電平有效,1KHz時鐘信號,CLOCK,POT,ADC0808,
10、OE:輸出允許信號,高電平有效,即OE=1時,將輸出寄存器中的數(shù)據(jù)放到數(shù)據(jù)總線上。,ALE:地址鎖存允許輸入信號,START:啟動信號輸入端,IOCLR=adstart;,delay(50);,IOSET=adstart;,delay(50);,IOCLR=adstart;,delay(50);,IO_Init();,while(IOPIN,IOSET=111;,i=IOPIN;,(1)送單次脈沖,啟,動A/D轉(zhuǎn)換,IO口設(shè)置,(2)A/D轉(zhuǎn)換是否結(jié)束,2、任務2A/D轉(zhuǎn)換,(3)OE置1,將A/D轉(zhuǎn)換后的數(shù)據(jù)讀入,3、任務3數(shù)碼管顯示,INT32U d,g,s,b;,b=i/100;,d=i
11、%100;,s=d/10;,g=d%10;,(1)2進制轉(zhuǎn)10進制,(2)動態(tài)顯示,OS_STK Task0StkTASK_STK_SIZE;,OS_STK Task1StkTASK_STK_SIZE;,OS_STK Task2StkTASK_STK_SIZE;,void Task0(void*data);,void Task1(void*data);,void Task2(void*data);,#include config.h“,#define TASK_STK_SIZE 64,2.3 C/OS-的程序結(jié)構(gòu),1、創(chuàng)建任務堆棧,定義任務堆棧大小,任務聲明,/*c語言的主函數(shù),由它啟動多任務
12、環(huán)境,*/,int main(void),OSInit();,/操作系統(tǒng)初始化,OSTaskCreate(Task0,(void*)0,OSTaskCreate(Task1,(void*)0,OSTaskCreate(Task2,(void*)0,OSStart();,/啟動操作系統(tǒng),return 0;,2、創(chuàng)建任務并啟動操作系統(tǒng),void Task0(void*p_arg),p_arg=p_arg;,/避免編譯警告,TargetInit();,/初始化,3、具體任務,OSTaskSuspend(OS_PRIO_SELF),等待狀態(tài),運行狀態(tài),就緒狀態(tài),OSTaskSuspend(優(yōu)先級),OSTaskResume(,優(yōu)先級,),4、任務切換任務的掛起和恢復,