參考:嵌入式專周_第1頁
參考:嵌入式專周_第2頁
參考:嵌入式專周_第3頁
參考:嵌入式專周_第4頁
參考:嵌入式專周_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 目錄一、概述11.實(shí)驗(yàn)?zāi)康?2.實(shí)習(xí)內(nèi)容與要求1二、嵌入式系統(tǒng)技術(shù)21.嵌入式系統(tǒng)技術(shù)簡(jiǎn)介22.C/OS-II操作系統(tǒng)簡(jiǎn)介2三、硬件設(shè)計(jì)31.Cortex-M3芯片簡(jiǎn)介3a.芯片概述3b.內(nèi)核架構(gòu)32.stm32簡(jiǎn)介43. 硬件電路模塊6a. 電路各模塊圖6b.電路總原理圖:8c.電路PCB圖9四、軟件設(shè)計(jì)91.Keil軟件基本用法9五、總結(jié)以及心得25一、概述1.實(shí)驗(yàn)?zāi)康?) 系統(tǒng)地了解嵌入式系統(tǒng)的基本組成、工作原理和應(yīng)用;熟悉嵌入式系統(tǒng)的開發(fā)流程。2) 學(xué)會(huì)閱讀中文、英文技術(shù)文檔,理解ARM硬件體系結(jié)構(gòu)。3) 了解嵌入式系統(tǒng)硬件和軟件開發(fā)的技術(shù),熟悉電路原理圖和PCB的設(shè)計(jì)、Keil軟件

2、的應(yīng)用。4) 熟悉嵌入式系統(tǒng)硬件和軟件的調(diào)試方法。5) 了解C/OS-II操作系統(tǒng)內(nèi)核的基本結(jié)構(gòu)和移植方法;掌握將C/OS-II內(nèi)核移植到Cortex-M3處理器上的方法和步驟。6) 綜合應(yīng)用所學(xué)過的專業(yè)知識(shí)。2.實(shí)習(xí)內(nèi)容與要求1) 閱讀Cortex-M3處理器相關(guān)技術(shù)文檔(中文、英文Datasheet,以STM32F103為主),理解ARM處理器的組成、工作原理,以及典型系統(tǒng)硬件的設(shè)計(jì)。2) 用電路CAD軟件,設(shè)計(jì)Cortex-M3的最小系統(tǒng),得到電路原理圖和PCB圖。3) 熟悉Keil MDK 5.14進(jìn)行ARM開發(fā)的方法,包括:軟件基本操作、創(chuàng)建工程、調(diào)試方法、ARM接口驅(qū)動(dòng)程序庫(kù)的使用

3、方法。4) 了解C/OS-II操作系統(tǒng)內(nèi)核的基本結(jié)構(gòu)和移植方法。5) 撰寫報(bào)告。二、嵌入式系統(tǒng)技術(shù)1.嵌入式系統(tǒng)技術(shù)簡(jiǎn)介 嵌入式系統(tǒng)(Embedded system),是一種“完全嵌入受控器件內(nèi)部,為特定應(yīng)用而設(shè)計(jì)的專用計(jì)算機(jī)系統(tǒng)”,根據(jù)英國(guó)電氣工程師協(xié)會(huì)( U.K. Institution of Electrical Engineer)的定義,嵌入式系統(tǒng)為控制、監(jiān)視或輔助設(shè)備、機(jī)器或用于工廠運(yùn)作的設(shè)備。與個(gè)人計(jì)算機(jī)這樣的通用計(jì)算機(jī)系統(tǒng)不同,嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求的預(yù)先定義的任務(wù)。由于嵌入式系統(tǒng)只針對(duì)一項(xiàng)特殊的任務(wù),設(shè)計(jì)人員能夠?qū)λM(jìn)行優(yōu)化,減小尺寸降低成本。嵌入式系統(tǒng)通常進(jìn)行大量

4、生產(chǎn),所以單個(gè)的成本節(jié)約,能夠隨著產(chǎn)量進(jìn)行成百上千的放大。嵌入式系統(tǒng)是用來控制或者監(jiān)視機(jī)器、裝置、工廠等大規(guī)模設(shè)備的系統(tǒng)。國(guó)內(nèi)普遍認(rèn)同的嵌入式系統(tǒng)定義為:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。通常,嵌入式系統(tǒng)是一個(gè)控制程序存儲(chǔ)在ROM中的嵌入式處理器控制板。事實(shí)上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機(jī)、汽車等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是由單個(gè)程序?qū)崿F(xiàn)整個(gè)控制邏輯。嵌入式系統(tǒng)的核心是由一個(gè)或幾個(gè)預(yù)先編程好以用來執(zhí)行少數(shù)幾項(xiàng)任務(wù)的微處理器或者單片機(jī)組成。與通用計(jì)算

5、機(jī)能夠運(yùn)行用戶選擇的軟件不同,嵌入式系統(tǒng)上的軟件通常是暫時(shí)不變的;所以經(jīng)常稱為“固件”。2.C/OS-II操作系統(tǒng)簡(jiǎn)介C/OS-II 是一種基于優(yōu)先級(jí)的搶占式多任務(wù)實(shí)時(shí)操作系統(tǒng),包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號(hào)量,郵箱,消息 隊(duì)列)和內(nèi)存管理等功能。它可以使各個(gè)任務(wù)獨(dú)立工作,互不干涉,很容易實(shí)現(xiàn)準(zhǔn)時(shí)而且無誤執(zhí)行,使實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)和擴(kuò)展變得容易,使應(yīng)用程序的設(shè)計(jì)過程大為減化。C /OS-II是一個(gè)完整的、可移植、可固化、可裁剪的搶占式實(shí)時(shí)多任務(wù)內(nèi)核。C/OS-II絕大部分的代碼是用ANSII的C語言編寫的,包含一小部分匯編代碼,使之可供不同架構(gòu)的微處理器使用。至今,從

6、8位到64位,C/OS-II已在超過40種不同架構(gòu)上的微處理器上運(yùn)行。C/OS-II已經(jīng)在世界范圍內(nèi)得到廣泛應(yīng)用,包括很多領(lǐng)域, 如手機(jī)、路由器、集線器、不間斷電源、飛行器、醫(yī)療設(shè)備及工業(yè)控制上。實(shí)際上,C/OS-II已經(jīng)通過了非常嚴(yán)格的測(cè)試,并且得到了美國(guó)航空管 理局(Federal Aviation Administration)的認(rèn)證,可以用在飛行器上。這說明C/OS-II是穩(wěn)定可靠的,可用于與人性命攸關(guān)的安全緊要(safety critical)系統(tǒng)。除此以外,C/OS-II 的鮮明特點(diǎn)就是源碼公開,便于移植和維護(hù)。三、硬件設(shè)計(jì)1.Cortex-M3芯片簡(jiǎn)介a.芯片概述Cortex-M

7、3是一個(gè)32位處理器內(nèi)核。內(nèi)部的數(shù)據(jù)路徑是32位的,寄存器是32位的,存儲(chǔ)器接口也是32位的。CM3采用了哈佛結(jié)構(gòu),擁有獨(dú)立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)訪問并行不悖。這樣一來數(shù)據(jù)訪問不再占用指令總線,從而提升了性能。為實(shí)現(xiàn)這個(gè)特性,CM3內(nèi)部含有好幾條總線接口,每條都為自己的應(yīng)用場(chǎng)合優(yōu)化過,并且它們可以并行工作。但是另一方面,指令總線和數(shù)據(jù)總線共享同一個(gè)存儲(chǔ)器空間(一個(gè)統(tǒng)一的存儲(chǔ)器系統(tǒng))。換句話說,不是因?yàn)橛袃蓷l總線,可尋址空間就變成8GB了。比較復(fù)雜的應(yīng)用可能需要更多的存儲(chǔ)系統(tǒng)功能,為此CM3提供一個(gè)可選的MPU,而且在需要的情況下也可以使用外部的cache。另外在CM3中,Bot

8、h小端模式和大端模式都是支持的。CM3內(nèi)部還附贈(zèng)了好多調(diào)試組件,用于在硬件水平上支持調(diào)試操作,如指令斷點(diǎn),數(shù)據(jù)觀察點(diǎn)等。另外,為支持更高級(jí)的調(diào)試,還有其它可選組件,包括指令跟蹤和多種類型的調(diào)試接口。b.內(nèi)核架構(gòu)ARMCortex-M3采用哈佛結(jié)構(gòu),并選擇了適合于微控制器應(yīng)用的三級(jí)流水線,但增加了分支預(yù)測(cè)功能?,F(xiàn)代處理器大多采用指令預(yù)取和流水線技術(shù),以提高處理器的指令執(zhí)行速度。流水線處理器在正常執(zhí)行指令時(shí),如果碰到分支(跳轉(zhuǎn))指令,由于指令執(zhí)行的順序可能會(huì)發(fā)生變化,指令預(yù)取隊(duì)列和流水線中的部分指令就可能作廢,而需要從新的地址重新取指、執(zhí)行,這樣就會(huì)使流水線“斷流”,處理器性能因此而受到影響。特別

9、是現(xiàn)代C語言程序,經(jīng)編譯器優(yōu)化生成的目標(biāo)代碼中,分支指令所占的比例可達(dá)10-20%,對(duì)流水線處理器的影響會(huì)的更大。為此,現(xiàn)代高性能流水線處理器中一般都加入了分支預(yù)測(cè)部件,就是在處理器從存儲(chǔ)器預(yù)取指令時(shí),當(dāng)遇到分支(跳轉(zhuǎn))指令時(shí),能自動(dòng)預(yù)測(cè)跳轉(zhuǎn)是否會(huì)發(fā)生,再?gòu)念A(yù)測(cè)的方向進(jìn)行取指,從而提供給流水線連續(xù)的指令流,流水線就可以不斷地執(zhí)行有效指令,保證了其性能的發(fā)揮。ARMCortex-M3內(nèi)核的預(yù)取部件具有分支預(yù)測(cè)功能,可以預(yù)取分支目標(biāo)地址的指令,使分支延遲減少到一個(gè)時(shí)鐘周期。針對(duì)業(yè)界對(duì)ARM處理器中斷響應(yīng)的問題,Cortex-M3首次在內(nèi)核上集成了嵌套向量中斷控制器(NVIC)。Cortex-M3的

10、中斷延遲只有12個(gè)時(shí)鐘周期(ARM7需要24-42個(gè)周期);Cortex-M3還使用尾鏈技術(shù),使得背靠背(back-to-back)中斷的響應(yīng)只需要6個(gè)時(shí)鐘周期(ARM7需要大于30個(gè)周期)。Cortex-M3采用了基于棧的異常模式,使得芯片初始化的封裝更為簡(jiǎn)單。Cortex-M3加入了類似于8位處理器的內(nèi)核低功耗模式,支持3種功耗管理模式:通過一條指令立即睡眠;異常/中斷退出時(shí)睡眠;深度睡眠。使整個(gè)芯片的功耗控制更為有效。2.stm32簡(jiǎn)介STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARM Cortex-0內(nèi)核(ST's product portfolio

11、contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+, Cortex®-M3, Cortex®-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform)

12、。按內(nèi)核架構(gòu)分為不同產(chǎn)品:其中STM32F1系列有:STM32F103“增強(qiáng)型”系列STM32F101“基本型”系列STM32F105、STM32F107“互聯(lián)型”系列增強(qiáng)型系列時(shí)鐘頻率達(dá)到72MHz,是同類產(chǎn)品中性能最高的產(chǎn)品;基本型時(shí)鐘頻率為36MHz,以16位產(chǎn)品的價(jià)格得到比16位產(chǎn)品大幅提升的性能,是32位產(chǎn)品用戶的最佳選擇。兩個(gè)系列都內(nèi)置32K到128K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。時(shí)鐘頻率72MHz時(shí),從閃存執(zhí)行代碼,STM32功耗36mA,是32位市場(chǎng)上功耗最低的產(chǎn)品,相當(dāng)于0.5mA/MHz。STM32平臺(tái)采用核心板+外圍板方式。核心板主要包括STM32F

13、103VET6最小系統(tǒng)、按鍵、LED燈、TF卡、串口和JTAG電路??梢酝瓿蒘TM32內(nèi)部資源的大部分開發(fā)應(yīng)用。外圍板包括數(shù)碼管電路、存儲(chǔ)器電路、紅外、光敏電阻、溫度傳感器、ULN2003電路、步進(jìn)電機(jī)、蜂鳴器、DS1302時(shí)鐘電路和CAN總線等電路設(shè)計(jì),基本包括了STM32的所有資源、同時(shí)又對(duì)IIC、單總線、SPI總線、CAN總線等協(xié)議進(jìn)行了硬件設(shè)計(jì)??梢哉f,如何將核心板和外圍板調(diào)試完成,就掌握了大部分的STM32內(nèi)容。核心板的資源有: 1. 主CPU, 為STM32F103VET62.  MiniUSB插座,具有通信功能,可進(jìn)行USB通信實(shí)驗(yàn)3. 電源模塊,可

14、以為系統(tǒng)提供3.3V電源4.  單片機(jī)最小系統(tǒng),包括晶振,復(fù)位電路,去耦電容等 5. 4個(gè)LED燈6. 4個(gè)按鍵電路7. TF卡電路外圍板的資源有: 1. 2個(gè)四路數(shù)碼管2. 1個(gè)ULN2003電路、1個(gè)步進(jìn)電機(jī)3. 1個(gè)蜂鳴器4. 1個(gè)24C02芯片5. 1個(gè)紅外檢測(cè)芯片HX18386. 1個(gè)光敏電阻7. 1個(gè)DS18B20溫度檢測(cè)芯片8. 1個(gè)DS1302時(shí)鐘芯片9. 1個(gè)CAN通信芯片TJA10503. 硬件電路模塊a. 電路各模塊圖Stm32系統(tǒng)原理圖b.電路總原理圖:c.電路PCB圖四、軟件設(shè)計(jì)1.Keil軟件基本用法1) 在桌面新建文件夾,命名。打開下

15、載好的Keil軟件,如圖2) 選擇菜單欄(工程新建工程),然后出現(xiàn)的對(duì)話框,保存在選-桌面_選擇自己新建的文件夾打開,輸入任意名字,點(diǎn)擊保存,如圖3) 然后出現(xiàn)如圖所示,選擇89c51,點(diǎn)擊確定4) 選擇文件新件文件,輸入程序,然后點(diǎn)擊保存,出現(xiàn)對(duì)話框文件名后記得加.c 。如圖所示5) 然后選擇左方框中的Target 1文件夾展開,選擇Souece Group1點(diǎn)擊鼠標(biāo)右鍵,選擇增加文件到組,打開如圖所示,選擇Text1.c,單擊Add6) 然后選擇左方框中的Target 1文件夾,右擊鼠標(biāo),打開選擇目標(biāo)Target 1屬性,在出現(xiàn)的對(duì)話框選擇輸出按鈕下的E生成HEX文件前打鉤,點(diǎn)擊確定如圖7

16、) HEX文件已產(chǎn)生,如圖2溫度測(cè)量電路圖3.程序#include"stm32f10x.h"#include"string.h"#include"usart.h"#include"delay.h"#include"led.h"#include"key.h"#include"24cxx.h"#include"ili93xx.h"#include"touch.h"#include "ucos_ii.h"

17、; #include"GUI.h"#include"app_cfg.h"OS_STK Start_Task_StkSTART_TASK_STK_SIZE; static void Load_Drive(void)u8 key; Stm32_Clock_Init(9); delay_init(72); uart_init(72,9600); LED_Init(); KEY_Init(); AT24CXX_Init(); GUI_Init();tp_dev.init();key = KEY_Scan(0);if(key=1)TP_Adjust(); int

18、main(void) Load_Drive(); while(1) OSInit(); OSTaskCreate(Start_Task, (void *)0, &Start_Task_StkSTART_TASK_STK_SIZE-1, START_TASK_PRIO); OSStart(); return 0; 6.2、app.c#include"app_cfg.h"#include "ucos_ii.h" #include "led.h"#include "gui.h"OS_STK UCGUI_DEMO_

19、Task_StkUCGUI_DEMO_TASK_STK_SIZE; OS_STK LED_Task_StkLED_TASK_STK_SIZE; OS_STK TOUCH_TEST_Task_StkTOUCH_TEST_TASK_STK_SIZE; OS_STK LED1_Task_StkLED1_TASK_STK_SIZE;static void Create_Task(void); void Start_Task(void *p_arg);static void UCGUI_DEMO_Task(void *p_arg);static void LED_Task(void *p_arg);st

20、atic void LED1_Task(void *p_arg);static void TOUCH_TEST_Task(void *p_arg);void GUID(void);static void Create_Task(void) OSTaskCreateExt(UCGUI_DEMO_Task, (void *)0,&UCGUI_DEMO_Task_StkUCGUI_DEMO_TASK_STK_SIZE -1, UCGUI_DEMO_TASK_PRIO,UCGUI_DEMO_TASK_PRIO, & UCGUI_DEMO_Task_Stk0, UCGUI_DEMO_TA

21、SK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR ); OSTaskCreateExt(LED_Task, (void *)0,&LED_Task_StkLED_TASK_STK_SIZE -1, LED_TASK_PRIO,LED_TASK_PRIO, & LED_Task_Stk0, LED_TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR ); OSTaskCreateExt(LED1_Task, (void *)

22、0,&LED1_Task_StkLED1_TASK_STK_SIZE -1, LED1_TASK_PRIO,LED1_TASK_PRIO, & LED1_Task_Stk0, LED1_TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR ); OSTaskCreateExt(TOUCH_TEST_Task, (void *)0,&TOUCH_TEST_Task_StkTOUCH_TEST_TASK_STK_SIZE -1, TOUCH_TEST_TASK_PRIO,TOUCH_TEST_TA

23、SK_PRIO, & TOUCH_TEST_Task_Stk0, TOUCH_TEST_TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR ); void Start_Task(void *p_arg) (void)p_arg; Create_Task(); while (1) OSTimeDlyHMSM(0, 0, 0, 500); static void UCGUI_DEMO_Task(void *p_arg)(void)p_arg;while(1) MainTask(); OSTimeDlyHMSM(

24、0, 0, 0, 10); static void LED_Task(void *p_arg)(void)p_arg;while(1)led_on(0);OSTimeDlyHMSM(0,0,1,0); led_off(0);OSTimeDlyHMSM(0,0,1,0); static void LED1_Task(void *p_arg)(void)p_arg;while(1)led_on(1);OSTimeDlyHMSM(0,0,0,500); led_off(1);OSTimeDlyHMSM(0,0,0,500); static void TOUCH_TEST_Task(void *p_a

25、rg)(void)p_arg;while(1) GUI_TOUCH_Exec(); OSTimeDlyHMSM(0, 0, 0, 10); 6.3、MainTask.c#include "GUI.h"#include "button.h"#include "DIALOG.h"#include "delay.h"BUTTON_Handle hButton;BUTTON_Handle hButton1;BUTTON_Handle hButton2; int Key = 0;void BUT(void);void ESC

26、(void);void MainTask(void)GUI_Init();BUT();ESC();Key = GUI_WaitKey();while(1)if (Key!=0)switch(Key)case 1: GUI_DispStringAt("Hello world!",113,70);BUTTON_Delete(hButton);BUTTON_Delete(hButton1);BUTTON_Delete(hButton2);GUI_DispDecAt(Key,140,140,4);Key=3;break;case 2: GUI_DispStringAt("hehe!",113,70);BUTTON_Delete(hButton1);BUTTON_Delete(hButton1);BUTTON_Delete(hButton2);GUI_DispDecAt(Key,140,140,4);Key=3;break;case 3: delay_ms(10);BUT();break;default:break;Key=0;elsedelay_ms(10);void ESC(void)GUI_SetColor(GUI_CYAN);GUI_SetFont(&GUI_Font8x

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論