《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計》 課件 項目1、2 GPIO基礎(chǔ)應(yīng)用-實現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能、利用定時中斷實現(xiàn)頻閃燈_第1頁
《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計》 課件 項目1、2 GPIO基礎(chǔ)應(yīng)用-實現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能、利用定時中斷實現(xiàn)頻閃燈_第2頁
《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計》 課件 項目1、2 GPIO基礎(chǔ)應(yīng)用-實現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能、利用定時中斷實現(xiàn)頻閃燈_第3頁
《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計》 課件 項目1、2 GPIO基礎(chǔ)應(yīng)用-實現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能、利用定時中斷實現(xiàn)頻閃燈_第4頁
《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計》 課件 項目1、2 GPIO基礎(chǔ)應(yīng)用-實現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能、利用定時中斷實現(xiàn)頻閃燈_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式系統(tǒng)設(shè)計

為了實現(xiàn)嵌入式系統(tǒng)設(shè)計的可移植和可復用,嵌入式硬件和嵌入式軟件均采用構(gòu)件化的設(shè)計思想,即對嵌入式硬件和嵌入式軟件進行封裝,供系統(tǒng)設(shè)計者調(diào)用,并倡導嵌入式軟件分層設(shè)計的理念,以大幅度降低嵌入式技術(shù)學習難度和開發(fā)難度。

本書特色:項目任務(wù)驅(qū)動,突出學以致用,注重實踐創(chuàng)新。每個項目且均采用了“通用知識”→“嵌入式構(gòu)件設(shè)計”→“應(yīng)用層程序設(shè)計”→“學以致用與創(chuàng)新”的學習流程。采用“搭積木”的思想,逐步提高嵌入式系統(tǒng)設(shè)計能力。

本書可作為高等學校電子信息類、計算機類、自動化類等專業(yè)的嵌入式系統(tǒng)設(shè)計教材,也可作為嵌入式技術(shù)培訓教材,還可供從事嵌入式技術(shù)開發(fā)的工程技術(shù)人員參考。項目1:GPIO基礎(chǔ)應(yīng)用—實現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能項目2:利用定時中斷實現(xiàn)頻閃燈項目3:GPIO和定時器的綜合應(yīng)用—實現(xiàn)數(shù)碼管顯示、鍵盤測控、測溫功能項目4:利用

UART

實現(xiàn)上位機和下位機的通信項目5:利用

Timer

實現(xiàn)PWM和輸入捕獲功能項目6:利用

ADC

設(shè)計簡易數(shù)字電壓表項目7:利用

SPI

實現(xiàn)多機串行通信項目8:利用

CAN

實現(xiàn)多機通信教

內(nèi)

項目1:GPIO基礎(chǔ)應(yīng)用——實現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能【項目導讀】在現(xiàn)代生活中,燈光除了用于照明,還廣泛用于氛圍營造(如城市景觀燈、舞臺變幻燈、廣告霓虹燈等)或狀態(tài)指示(如交通信號燈、設(shè)備狀態(tài)指示燈等)。在嵌入式系統(tǒng)中,LED小燈是必備的狀態(tài)指示設(shè)備。另外,在現(xiàn)實生活的很多場合中,通過開關(guān)(switch)控制用電設(shè)備。通過對微控制器編程,可以控制小燈的狀態(tài)(點亮或熄滅),也可以檢測開關(guān)的狀態(tài)(閉合或斷開),從而實現(xiàn)軟件干預(yù)硬件?!緦W習目標】(1)熟悉嵌入式系統(tǒng)的概念、組成以及嵌入式技術(shù)學習方法。(2)熟悉嵌入式芯片STM32F103C8T6資源和硬件最小系統(tǒng)。(3)理解GPIO(通用輸入/輸出)的通用知識,掌握微控制器GPIO底層驅(qū)動構(gòu)件的使用方法。(4)掌握小燈、開關(guān)等應(yīng)用外設(shè)的嵌入式硬件構(gòu)件和嵌入式軟件構(gòu)件的設(shè)計方法和使用方法。(5)熟悉嵌入式軟件最小系統(tǒng)的工程文件組織方法,并能進行閃燈、流水燈和開關(guān)檢測與控制功能的應(yīng)用層程序設(shè)計。(6)掌握嵌入式軟件集成開發(fā)環(huán)境KeilMDK及目標程序下載軟件J-Flash的使用方法,為后續(xù)學習奠定良好的基礎(chǔ)。*(7)熟悉微控制器GPIO底層驅(qū)動構(gòu)件源文件的設(shè)計方法。任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學習方法1.1.1嵌入式系統(tǒng)的概念和組成1、通用計算機和嵌入式計算機

微型計算機具有很大的通用性,所以又稱通用計算機。

測控領(lǐng)域的計算機系統(tǒng)是嵌入到應(yīng)用系統(tǒng)中,以計算機技術(shù)為基礎(chǔ),軟、硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、成本、體積、可靠性、功耗嚴格要求的專用計算機系統(tǒng),即嵌入式計算機系統(tǒng),簡稱嵌入式系統(tǒng)(EmbeddedSystem)。

通俗地說,除了通用計算機(如臺式計算機和筆記本計算機)外,所有包含CPU的系統(tǒng)都是嵌入式系統(tǒng),其中其中以32位/64位ARM微處理器為核心的嵌入式系統(tǒng)應(yīng)用越來越廣泛。任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學習方法1.1.1嵌入式系統(tǒng)的概念和組成1、通用計算機和嵌入式計算機

目前,ARM主要有以下3個系列的內(nèi)核,對應(yīng)不同的應(yīng)用領(lǐng)域:(1)Cortex-A內(nèi)核的應(yīng)用處理器(ApplicationProcessor,AP),主要面向智能手機、平板電腦、智能終端等多媒體領(lǐng)域。(2)Cortex-R內(nèi)核的實時處理器(Real-TimeProcessor,RTP),主要面向汽車電子等對實時性要求很高的領(lǐng)域。(3)Cortex-M內(nèi)核的微控制器(MicroControllerUnit,MCU,國內(nèi)也稱為單片機),主要面向工業(yè)控制、農(nóng)業(yè)控制、智能儀器儀表、智能家電、機電產(chǎn)品和汽車電子等領(lǐng)域?!局R鞏固】簡述通用計算機與嵌入式計算機的區(qū)別。任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學習方法1.1.1嵌入式系統(tǒng)的概念和組成2、以MCU為核心的嵌入式系統(tǒng)(1)MCU的基本結(jié)構(gòu)

MCU的基本含義:在一塊芯片上集成了CPU、ROM、RAM、定時/計數(shù)器、中斷系統(tǒng)、看門狗及通用輸入輸出(GPIO)、模/數(shù)(A/D)轉(zhuǎn)換、數(shù)/模(D/A)轉(zhuǎn)換、串行通信I/O等多種輸入輸出接口的比較完整的數(shù)字處理系統(tǒng)。CPU與其他部件交互是通過MCU內(nèi)部總線實現(xiàn)的。任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學習方法1.1.1嵌入式系統(tǒng)的概念和組成2、以MCU為核心的嵌入式系統(tǒng)(2)以MCU為核心的嵌入式系統(tǒng)的基本組成任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學習方法1.1.1嵌入式系統(tǒng)的概念和組成【知識鞏固】(1)簡述MCU的基本含義。(2)畫出以MCU為核心的嵌入式系統(tǒng)組成框圖。1.1.2

嵌入式系統(tǒng)的知識體系和學習建議任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學習方法

嵌入式硬件構(gòu)件設(shè)計主要包括MCU硬件最小系統(tǒng)(硬件核心構(gòu)件)設(shè)計和應(yīng)用外設(shè)硬件構(gòu)件(小燈LIGHT、蜂鳴器BZ、開關(guān)SW、鍵盤KB、數(shù)碼管LED、液晶LCD等)設(shè)計。

嵌入式軟件構(gòu)件設(shè)計采用分層設(shè)計思想,自下而上依次是“底層驅(qū)動構(gòu)件”、“應(yīng)用外設(shè)軟件構(gòu)件”和“應(yīng)用層軟件構(gòu)件”共3層軟件設(shè)計。為了實現(xiàn)嵌入式系統(tǒng)設(shè)計的可移植和可復用,大幅度降低嵌入式技術(shù)學習難度和開發(fā)難度,嵌入式硬件和軟件均需采用“構(gòu)件化”設(shè)計。

其中底層驅(qū)動構(gòu)件和應(yīng)用外設(shè)軟件構(gòu)件都包括對應(yīng)的.h頭文件和.c源文件,而應(yīng)用層軟件構(gòu)件包括總頭文件includes.h、主程序源文件main.c和中斷服務(wù)程序源文件isr.c。

通用軟件構(gòu)件與CPU和MCU基本無關(guān),是服務(wù)于以上3層軟件設(shè)計的。

隨著技術(shù)的發(fā)展,MCU的硬件集成度越來越高,使得嵌入式硬件設(shè)計難度不斷降低,因此嵌入式軟件設(shè)計在整個嵌入式系統(tǒng)開發(fā)中所占的分量越來越大。1.1.2

嵌入式系統(tǒng)的知識體系和學習建議

嵌入式軟件設(shè)計主要采用C語言及少量的匯編語言。

任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學習方法1.1.2

嵌入式系統(tǒng)的知識體系和學習建議

嵌入式軟件設(shè)計與調(diào)試是在嵌入式硬件的基礎(chǔ)上協(xié)同進行的,其過程是在PC上利用嵌入式軟件開發(fā)環(huán)境(如KeilMDK、IAR等)進行程序的編輯、編譯和連接,生成工程對應(yīng)的目標代碼;最后將生成的目標代碼通過寫入器下載到嵌入式芯片中運行與調(diào)試。任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學習方法MCU寫入器任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)1.2.1

STM32F1系列MCU簡介

內(nèi)核:ARMCortex-M3、32位。

特點:

CPU最高工作頻率為72MHz,支持單周期乘法和硬件除法工作電壓范圍為2.0~3.6V,工作溫度范圍為-40~85℃

支持使用內(nèi)部時鐘

使用外部時鐘

支持SWD和JTAG調(diào)試

STM32F103C8T6資源:

封裝形式:

LQFP48,共有48個引腳

片內(nèi)存儲器:64KB的Flash存儲器;20KB的SRAM

片內(nèi)外設(shè):

GPIO(可用引腳為34個)、4個16位Timer、2個12位ADC、

3個UART、2個SPI、2個I2C、1個CAN、1個USB、1個看門狗等

性價比高:

可滿足工業(yè)、醫(yī)療和消費類市場等多種應(yīng)用需求,可完全替代傳統(tǒng)的8位/16位MCU。任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)

(1)片內(nèi)Flash存儲映射(0x0800_0000~0x0800_FFFF),共64KB,一般被用來存儲中斷向量、程序代碼、常數(shù)等,其中前236B為中斷向量區(qū)(將在2.2.1節(jié)中具體介紹)。

(2)片內(nèi)SRAM存儲映射(0x2000_0000~0x2000_4FFF),共20KB,一般被用來存儲全局變量、靜態(tài)變量、臨時變量(堆??臻g)等。1、MCU的存儲映射

ARMCortex-M處理器直接尋址空間為4GB,地址范圍為0x0000_0000~0xFFFF_FFFF。

存儲映射,是指將4GB空間看作存儲器,對各類物理資源(Flash存儲器、SRAM、外設(shè)等)在4GB空間內(nèi)進行統(tǒng)一編址,CPU可通過直接地址訪問物理資源。

(3)外設(shè)(GPIO、UART、Timer、ADC等)寄存器存儲映射,只需了解,實際應(yīng)用中,可直接使用芯片頭文件中給出的相關(guān)宏定義。1.2.2

MCU存儲映射、引腳功能與硬件最小系統(tǒng)任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)2、MCU的引腳功能1.2.2

MCU存儲映射、引腳功能與硬件最小系統(tǒng)任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)2、MCU的引腳功能

(1)硬件最小系統(tǒng)引腳:需要服務(wù)的引腳,包括電源、復位、晶振、程序?qū)懭虢涌冢⊿WD)等引腳。1.2.2

MCU存儲映射、引腳功能與硬件最小系統(tǒng)

從需求和供給的角度,將MCU引腳分為硬件最小系統(tǒng)引腳和I/O端口資源類引腳兩大類。任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)2、MCU的引腳功能

I/O引腳一般具有多個復用功能,詳見表1-4。在實際應(yīng)用時只能使用其中的一個功能。在嵌入式系統(tǒng)設(shè)計中,需要根據(jù)所使用的外設(shè)(含片內(nèi)外設(shè)),對MCU的引腳資源進行統(tǒng)籌規(guī)劃,以免多個外設(shè)使用相同的引腳而相互沖突。

(2)I/O端口資源類引腳:對外提供服務(wù)。

STM32F103C8T6具有A、B、C、D四個端口,37個I/O引腳。若使用內(nèi)部時鐘,則除去硬件最小系統(tǒng)所使用的的SWD接口的2個引腳(PA13、PA14)和啟動方式所使用的1個引腳(PB2),在實際應(yīng)用中,可有34個對外提供服務(wù)的通用I/O引腳。

從需求和供給的角度,將MCU引腳分為硬件最小系統(tǒng)引腳和I/O端口資源類引腳兩大類。1.2.2

MCU存儲映射、引腳功能與硬件最小系統(tǒng)任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)3、MCU的硬件最小系統(tǒng)

MCU硬件最小系統(tǒng)是可以使MCU內(nèi)部程序正常運行的最小規(guī)模的電路,主要包括MCU和電源、晶振、復位、寫入調(diào)試器接口等外圍電路。1.2.2

MCU存儲映射、引腳功能與硬件最小系統(tǒng)任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)【知識鞏固】(1)MCU的Flash存儲器和RAM分別存儲哪些內(nèi)容?(2)從需求和供給的角度,可將MCU的引腳分為幾類?(3)簡述MCU硬件最小系統(tǒng)的含義和組成。任務(wù)1.3

掌握MCU的GPIO底層驅(qū)動構(gòu)件使用方法

GPIO(GeneralPurposeInputOutput

),通用輸入/輸出,它是I/O的最基本形式。1.3.1

GPIO的通用知識1、GPIO概念

MCU的大多數(shù)GPIO引腳可以通過編程來設(shè)定其工作方式為輸入或輸出,稱之為雙向GPIO。

某個引腳作為通用輸入引腳,MCU可以通過讀取其內(nèi)部寄存器的值“1”或“0”,以確定該引腳的輸入狀態(tài)是高電平還是低電平,即開關(guān)量輸入。

某個引腳作為通用輸出引腳,MCU可以通過向其內(nèi)部寄存器寫“1”或“0”,以控制該引腳輸出高電平或低電平,即開關(guān)量輸出。

若MCU的某個引腳通過一個電阻接電源(VCC),則該電阻被稱為“上拉電阻”。

若MCU的某個引腳通過一個電阻接地(GND),則該電阻被稱為“下拉電阻”。1.3.1

GPIO的通用知識2、上拉電阻、下拉電阻與輸入引腳的基本接法任務(wù)1.3

掌握MCU的GPIO底層驅(qū)動構(gòu)件使用方法【思考】MCU是如何判斷開關(guān)狀態(tài)的?

作為通用輸出引腳,MCU內(nèi)部程序向該引腳輸出高電平或低電平驅(qū)動外部設(shè)備工作,即開關(guān)量輸出。輸出引腳O1和O2分別采用了直接驅(qū)動和放大驅(qū)動方式。1.3.1

GPIO的通用知識3、輸出引腳的基本接法任務(wù)1.3

掌握MCU的GPIO底層驅(qū)動構(gòu)件使用方法【思考】

MCU控制LED小燈和蜂鳴器的原理?

為了實現(xiàn)程序的可移植和可復用,減小重復勞動,MCU底層驅(qū)動程序封裝成構(gòu)件。GPIO底層驅(qū)動構(gòu)件由gpio.h頭文件和gpio.c源文件組成,若要使用GPIO底層驅(qū)動構(gòu)件,只需將這兩個文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實現(xiàn)對GPIO引腳的操作。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx

其中,gpio.h頭文件主要包括相關(guān)頭文件的包含、一些必要的宏定義、對外接口函數(shù)的聲明,而gpio.c源文件則是對外接口函數(shù)的具體實現(xiàn),初學者不必深究。

用戶只要熟悉gpio.h頭文件的內(nèi)容,即可使用GPIO底層驅(qū)動構(gòu)件進行編程,實現(xiàn)通過GPIO對不同外設(shè)進行檢測或控制的功能(如檢測開關(guān)的狀態(tài)、控制小燈的亮滅等)。1.3.2

MCU的GPIO底層驅(qū)動構(gòu)件使用方法任務(wù)1.3

掌握MCU的GPIO底層驅(qū)動構(gòu)件使用方法任務(wù)1.4嵌入式構(gòu)件化設(shè)計及閃燈的實現(xiàn)

為了實現(xiàn)嵌入式系統(tǒng)設(shè)計在不同MCU和不同應(yīng)用場合中的可移植和可復用,降低嵌入式技術(shù)學習難度和開發(fā)難度,嵌入式硬件和軟件均需采用“構(gòu)件化”設(shè)計。現(xiàn)以小燈構(gòu)件設(shè)計為例,說明嵌入式硬件構(gòu)件和軟件構(gòu)件的設(shè)計方法。1.4.1

小燈硬件構(gòu)件和軟件構(gòu)件的設(shè)計及使用方法1、小燈硬件構(gòu)件的設(shè)計及使用方法a)小燈硬件構(gòu)件b)小燈硬件構(gòu)件與MCU的引腳連接

圖中虛線框內(nèi)的粗體標識為硬件構(gòu)件的接口注釋,以便于理解該接口的含義和功能;虛線框外的正體標識為硬件構(gòu)件的接口網(wǎng)標,具有電氣連接特性,表示硬件構(gòu)件的接口與MCU的引腳相連接。硬件構(gòu)件在不同應(yīng)用系統(tǒng)中移植和復用時,僅需修改接口網(wǎng)標。1.4.1

小燈硬件構(gòu)件和軟件構(gòu)件的設(shè)計及使用方法2、小燈軟件構(gòu)件的組成、設(shè)計及使用方法

小燈軟件構(gòu)件由

light.h

頭文件

light.c

源文件組成,若要使用小燈軟件構(gòu)件,只需將這兩個文件添加到所建工程的05_App(應(yīng)用外設(shè)軟件構(gòu)件)文件夾中即可實現(xiàn)對小燈的控制。

其中,light.h

頭文件主要包括相關(guān)頭文件的包含、小燈硬件構(gòu)件相關(guān)的宏定義、小燈構(gòu)件對外接口函數(shù)的聲明。light.c

源文件是小燈構(gòu)件對外接口函數(shù)的具體實現(xiàn)。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx用戶只要熟悉light.h頭文件的內(nèi)容,即可使用小燈軟件構(gòu)件進行編程。任務(wù)1.4嵌入式構(gòu)件化設(shè)計及閃燈的實現(xiàn)【學以致用】根據(jù)

light.h頭文件,寫出實現(xiàn)下列功能的函數(shù)調(diào)用語句。

(1)將小燈LIGHT1初始化為熄滅狀態(tài)。

(2)控制小燈LIGHT1點亮。

(3)改變小燈LIGHT1的狀態(tài)。1.4.2

嵌入式軟件最小系統(tǒng)設(shè)計——實現(xiàn)閃燈1、嵌入式軟件最小系統(tǒng)

在嵌入式基礎(chǔ)實踐中,一般以“MCU控制小燈閃爍”作為入門實驗,對應(yīng)的程序框架稱為“嵌入式軟件最小系統(tǒng)”(具體解釋詳見表1-5)。

在此框架下可通過添加其他軟件構(gòu)件和修改應(yīng)用層程序(工程源程序)完成不同功能的軟件設(shè)計。

對初學者,學習重點是:①熟悉04_Driver(MCU底層驅(qū)動構(gòu)件)、05_App(應(yīng)用外設(shè)軟件構(gòu)件)和

06_Soft(通用軟件構(gòu)件)這幾個文件夾中的頭文件內(nèi)容,掌握對外接口函數(shù)的調(diào)用方法;②根據(jù)系統(tǒng)功能需求,進行應(yīng)用層程序設(shè)計和優(yōu)化,即設(shè)計07_Source(應(yīng)用層軟件構(gòu)件)文件夾中的文件。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx

其中,“04底層驅(qū)動構(gòu)件”、“05應(yīng)用外設(shè)軟件構(gòu)件”、“06通用軟件構(gòu)件”、“07應(yīng)用層軟件構(gòu)件”的文件都是由本構(gòu)件的.h和.c文件組成。

任務(wù)1.4嵌入式構(gòu)件化設(shè)計及閃燈的實現(xiàn)2、公共要素軟件構(gòu)件的組成及使用方法

公共要素軟件構(gòu)件由common.h頭文件和

common.c源文件組成,使用時,需將這兩個文件添加到所建工程的06_Soft(通用軟件構(gòu)件)文件夾中。用戶只要熟悉common.h頭文件的內(nèi)容,即可掌握該軟件構(gòu)件的使用方法。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx1.4.2

嵌入式軟件最小系統(tǒng)設(shè)計——實現(xiàn)閃燈任務(wù)1.4嵌入式構(gòu)件化設(shè)計及閃燈的實現(xiàn)3、閃燈的應(yīng)用層程序設(shè)計

在嵌入式軟件最小系統(tǒng)框架下,設(shè)計07_Source(應(yīng)用層軟件構(gòu)件)的文件,以實現(xiàn)小燈閃爍的效果。1)工程總頭文件includes.h:包含04、05、06文件夾中的頭文件2)主程序源文件main.c:

小燈初始化,在主循環(huán)中實現(xiàn)閃燈效果在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx1.4.2

嵌入式軟件最小系統(tǒng)設(shè)計——實現(xiàn)閃燈任務(wù)1.4嵌入式構(gòu)件化設(shè)計及閃燈的實現(xiàn)【思路總結(jié)】畫出小燈閃爍的程序執(zhí)行流程圖。(1)編譯工程文件,生成MCU可執(zhí)行的代碼文件(.hex文件)(2)將編譯生成的.hex文件下載至目標MCU中,運行程序【學以致用與創(chuàng)新】請通過修改主程序的代碼,分別完成:(1)改變小燈閃爍的頻率。(2)控制其他小燈閃爍。(3)實現(xiàn)流水燈的效果。任務(wù)1.4嵌入式構(gòu)件化設(shè)計及閃燈的實現(xiàn)1.4.2

嵌入式軟件最小系統(tǒng)設(shè)計——實現(xiàn)閃燈4、閃燈效果的測試任務(wù)1.5開關(guān)狀態(tài)檢測與控制功能的設(shè)計與實現(xiàn)1.5.1

開關(guān)硬件構(gòu)件和軟件構(gòu)件的設(shè)計及使用方法1、開關(guān)硬件構(gòu)件的設(shè)計及使用方法a)開關(guān)硬件構(gòu)件b)開關(guān)硬件構(gòu)件與MCU的引腳連接任務(wù)1.5開關(guān)狀態(tài)檢測與控制功能的設(shè)計與實現(xiàn)1.5.1

開關(guān)硬件構(gòu)件和軟件構(gòu)件的設(shè)計及使用方法2、開關(guān)軟件構(gòu)件的組成、設(shè)計及使用方法

開關(guān)軟件構(gòu)件由

sw.h頭文件

sw.c

源文件組成,若要使用開關(guān)軟件構(gòu)件,只需將這兩個文件添加到所建工程的05_App(應(yīng)用外設(shè)軟件構(gòu)件)文件夾中,即可實現(xiàn)對開關(guān)的操作。

其中,sw.h

頭文件主要包括相關(guān)頭文件的包含、開關(guān)硬件構(gòu)件相關(guān)的宏定義、開關(guān)構(gòu)件對外接口函數(shù)的聲明。sw.c

源文件是開關(guān)構(gòu)件對外接口函數(shù)的具體實現(xiàn)。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx用戶只要熟悉sw.h

頭文件的內(nèi)容,即可使用開關(guān)軟件構(gòu)件進行編程?!緦W以致用】根據(jù)sw.h頭文件,寫出實現(xiàn)下列功能的函數(shù)調(diào)用語句。(1)將開關(guān)SW1初始化。(2)獲取開關(guān)SW1的狀態(tài)。任務(wù)1.5開關(guān)狀態(tài)檢測與控制功能的設(shè)計與實現(xiàn)1.5.2

開關(guān)狀態(tài)檢測與控制功能的應(yīng)用層程序設(shè)計

利用小燈軟件構(gòu)件和開關(guān)軟件構(gòu)件,編程實現(xiàn)開關(guān)狀態(tài)檢測與控制功能:開關(guān)SW1閉合時,小燈LIGHT1亮;SW1斷開時,小燈LIGHT1滅。任務(wù)1.5開關(guān)狀態(tài)檢測與控制功能的設(shè)計與實現(xiàn)1.5.2

開關(guān)狀態(tài)檢測與控制功能的應(yīng)用層程序設(shè)計見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx

在嵌入式軟件最小系統(tǒng)框架下,設(shè)計07_Source(應(yīng)用層軟件構(gòu)件)的文件,以實現(xiàn)開關(guān)狀態(tài)檢測與控制功能。1)工程總頭文件includes.h:包含04、05、06文件夾中的頭文件2)主程序源文件main.c:

初始化,在主循環(huán)中查詢開關(guān)狀態(tài),并控制小燈亮、滅【學以致用與創(chuàng)新】實現(xiàn)多路開關(guān)狀態(tài)檢測與控制功能。

嵌入式系統(tǒng)設(shè)計

為了實現(xiàn)嵌入式系統(tǒng)設(shè)計的可移植和可復用,嵌入式硬件和嵌入式軟件均采用構(gòu)件化的設(shè)計思想,即對嵌入式硬件和嵌入式軟件進行封裝,供系統(tǒng)設(shè)計者調(diào)用,并倡導嵌入式軟件分層設(shè)計的理念,以大幅度降低嵌入式技術(shù)學習難度和開發(fā)難度。

本書特色:項目任務(wù)驅(qū)動,突出學以致用,注重實踐創(chuàng)新。每個項目且均采用了“通用知識”→“嵌入式構(gòu)件設(shè)計”→“應(yīng)用層程序設(shè)計”→“學以致用與創(chuàng)新”的學習流程。采用“搭積木”的思想,逐步提高嵌入式系統(tǒng)設(shè)計能力。

本書可作為高等學校電子信息類、計算機類、自動化類等專業(yè)的嵌入式系統(tǒng)設(shè)計教材,也可作為嵌入式技術(shù)培訓教材,還可供從事嵌入式技術(shù)開發(fā)的工程技術(shù)人員參考。項目1:GPIO基礎(chǔ)應(yīng)用—實現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能項目2:利用定時中斷實現(xiàn)頻閃燈項目3:GPIO和定時器的綜合應(yīng)用—實現(xiàn)數(shù)碼管顯示、鍵盤測控、測溫功能項目4:利用

UART

實現(xiàn)上位機和下位機的通信項目5:利用

Timer

實現(xiàn)PWM和輸入捕獲功能項目6:利用

ADC

設(shè)計簡易數(shù)字電壓表項目7:利用

SPI

實現(xiàn)多機串行通信項目8:利用

CAN

實現(xiàn)多機通信教

內(nèi)

項目2:利用定時中斷實現(xiàn)頻閃燈

在項目1中實現(xiàn)的小燈閃爍程序采用了完全軟件延時方式,即利用循環(huán)計數(shù)程序?qū)崿F(xiàn)軟件延時功能?!卷椖繉ёx】

該方式有兩大缺點:

①軟件延時一般用于粗略延時的場合;

②執(zhí)行延時子程序期間,CPU一直被占用而不能做其他事情,從而降低了CPU的利用率。項目2:利用定時中斷實現(xiàn)頻閃燈

為此,可使用MCU內(nèi)部可編程的定時/計數(shù)器實現(xiàn)延時。用戶根據(jù)需要設(shè)置定時時間,并啟動定時/計數(shù)器計數(shù),當定時時間到時,它將自動產(chǎn)生一個定時輸出信號(通常是中斷請求信號)告知CPU,使CPU轉(zhuǎn)去執(zhí)行定時中斷服務(wù)程序,從而實現(xiàn)某些定時功能。定時/計數(shù)器在計數(shù)期間,與CPU并行工作,不占用CPU的工作時間。該方式通過簡單的程序設(shè)置即可實現(xiàn)準確的定時?!卷椖繉ёx】

【學習目標】(1)理解定時器的定時原理。(2)理解中斷的通用知識,包括中斷的基本概念、基本過程及管理機制。(3)熟悉MCU內(nèi)部定時器的功能特性,掌握MCU內(nèi)部定時器底層驅(qū)動構(gòu)件的使用方法。(4)學會利用MCU內(nèi)部定時中斷功能實現(xiàn)頻閃燈或流水燈的應(yīng)用層程序設(shè)計方法。*(5)熟悉MCU內(nèi)部定時器底層驅(qū)動構(gòu)件源文件的設(shè)計方法。項目2:利用定時中斷實現(xiàn)頻閃燈任務(wù)2.1理解定時器的定時原理定時器本質(zhì)上是一個對計數(shù)時鐘進行周期統(tǒng)計的計數(shù)器。

在上圖中,計數(shù)器采用增1計數(shù)。計數(shù)器從初值0開始計數(shù),每經(jīng)過一個計數(shù)時鐘周期,計數(shù)器的值就加1,若計數(shù)器的值達到終值4,則在下一個時鐘到來時,計數(shù)器溢出,計數(shù)器的值恢復至初值0,然后進行下一輪的加1計數(shù),如此重復。

定時器每一輪的定時時間t=

計數(shù)次數(shù)×計數(shù)時鐘周期

在上圖中,一輪的計數(shù)次數(shù)是5,若計數(shù)時鐘頻率為1kHz(計數(shù)時鐘周期為1ms),則一輪的定時時間為5ms。任務(wù)2.1理解定時器的定時原理對于n位(二進制)定時/計數(shù)器,計數(shù)器的終值最大值為2n-1,結(jié)合上圖,定時/計數(shù)器一輪計數(shù)次數(shù)最大值為2n。n位定時/計數(shù)器一輪的最大定時時間t:

t=2n×計數(shù)時鐘周期

=2n/計數(shù)時鐘頻率

f若

f=

時鐘源頻率/分頻系數(shù),則

t=2n/(時鐘源頻率/分頻系數(shù))

【學以致用】

若定時器為16位,其時鐘源頻率為f,分頻系數(shù)為p,則一輪定時時間的范圍是多少?任務(wù)2.1理解定時器的定時原理

當計數(shù)器溢出時,定時器可向CPU發(fā)出中斷請求信號,使CPU暫停當前的工作,而轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,在中斷服務(wù)程序中實現(xiàn)具體的定時功能(如改變小燈的狀態(tài)等)。任務(wù)2.2理解中斷的通用知識2.2.1中斷的基本概念1、中斷的含義

中斷,是指MCU在正常運行程序時,由于MCU內(nèi)核異常(內(nèi)核中斷)或

MCU各功能模塊發(fā)出請求事件(非內(nèi)核中斷),使MCU停止正在運行的程序,而轉(zhuǎn)去處理異常(使芯片復位或使MCU做出其他處理)或

執(zhí)行處理內(nèi)核外部事件的程序(中斷服務(wù)程序)。任務(wù)2.2理解中斷的通用知識2.2.1中斷的基本概念2、中斷源、中斷向量表

引起MCU中斷的事件稱為中斷源。MCU的中斷源分為兩類:內(nèi)核中斷源和非內(nèi)核中斷源。

STM32F103C8T6的中斷源見表2-1。

中斷向量號是每個中斷源的固定編號。中斷向量表是指按照中斷源的中斷向量號的固定順序,用于存放中斷服務(wù)程序入口地址(中斷向量)的一段連續(xù)存儲區(qū)域。

IRQ中斷號是每個中斷源的另一個編號,每一個編號代表一個中斷源。在芯片頭文件stm32f10x.h中,使用一個枚舉類型實現(xiàn)了IRQ中斷號的編排。任務(wù)2.2理解中斷的通用知識2.2.1中斷的基本概念

在進行MCU設(shè)計時,一般都定義了中斷源的優(yōu)先級。MCU在程序執(zhí)行過程中,若有兩個以上的中斷同時發(fā)生,則優(yōu)先級最高的中斷源最先得到響應(yīng)。

3、中斷優(yōu)先級、可屏蔽中斷和不可屏蔽中斷

可屏蔽中斷,是指可通過編程方式關(guān)閉的中斷。不可屏蔽中斷,是指不能通過編程方式關(guān)閉的中斷。任務(wù)2.2理解中斷的通用知識2.2.2中斷的基本過程1、中斷請求

當某一中斷源需要CPU為其服務(wù)時,它會將對應(yīng)中斷源的中斷標志位置1,以便向CPU發(fā)出中斷請求信號。2、中斷檢測、中斷響應(yīng)和中斷處理

當CPU檢測到有中斷請求并響應(yīng)中斷請求時,首先保護現(xiàn)場(將CPU內(nèi)部寄存器的數(shù)據(jù)依次壓入RAM堆棧中);然后從目前等待的中斷源中取出優(yōu)先級最高中斷源的中斷向量,執(zhí)行相應(yīng)的中斷服務(wù)程序;最后恢復現(xiàn)場(從RAM堆棧依次彈出CPU內(nèi)部寄存器的數(shù)據(jù))、中斷返回(返回到中斷前的程序)。說明:上述過程是由系統(tǒng)自動完成的,用戶只需專注于主程序和中斷服務(wù)程序的設(shè)計。

【理解概念、觸類旁通】

舉出日常生活中利用中斷思想處理事情的例子。任務(wù)2.2理解中斷的通用知識2.2.3

CM3的非內(nèi)核模塊中斷管理機制1、CM3的中斷結(jié)構(gòu)及中斷過程

CM3的中斷結(jié)構(gòu)由模塊中斷源、嵌套向量中斷控制器(NestedVectoredInterruptController,NVIC)和

CM3內(nèi)核組成。

中斷過程分兩步:首先,模塊中斷源向NVIC發(fā)出中斷請求信號;然后,NVIC對發(fā)來的中斷信號進行管理,判斷該中斷是否使能,若使能,則通過私有外設(shè)總線發(fā)送給CM3內(nèi)核,由內(nèi)核進行中斷處理。任務(wù)2.2理解中斷的通用知識2.2.3

CM3的非內(nèi)核模塊中斷管理機制2、非內(nèi)核中斷使能(或禁止)配置步驟

若要使能一個非內(nèi)核中斷,則需要對其進行使能配置:

①將模塊中斷使能位置1,使模塊能夠發(fā)出中斷請求信號;

②調(diào)用內(nèi)核頭文件core_cm3.h中的NVIC_EnableIRQ函數(shù),允許模塊的中斷請求。

若要禁止一個非內(nèi)核中斷,則首先將模塊中斷使能位清零,禁止該模塊發(fā)出中斷請求信號;然后調(diào)用內(nèi)核頭文件core_cm3.h中的NVIC_DisableIRQ函數(shù),禁止模塊的中斷請求。任務(wù)2.3利用Timer定時中斷實現(xiàn)頻閃燈2.3.1MCU的Timer基本定時底層驅(qū)動構(gòu)件的使用方法1、MCU的Timer的數(shù)量和功能特性

在STM32F103C8T6中,有4個16位的定時器(Timer):TIM1~TIM4,均具有基本定時、脈寬調(diào)制(PWM)、輸入捕獲和輸出比較等多種功能。

4個定時器均有以下3種計數(shù)模式:

(1)向上計數(shù):從0遞增計數(shù)到模值(計數(shù)終值),生成上溢事件,然后重新從0開始遞增計數(shù)。

(2)向下計數(shù):從模值(計數(shù)初值)遞減計數(shù)到0,生成下溢事件,然后重新從模值開始遞減計數(shù)。

(3)向上/向下雙向計數(shù):從0遞增計數(shù)到模值-1,生成上溢事件;然后從模值遞減計數(shù)到1,生成下溢事件。之后,計數(shù)器從0開始重新計數(shù)。

【學以致用】結(jié)合圖2-1,分別畫出定時器在計數(shù)初值為5時對應(yīng)的向下計數(shù)模式示意圖

定時器在計數(shù)初值為0、模值為5時對應(yīng)的向上/向下雙向計數(shù)模式示意圖。任務(wù)2.3利用Timer定時中斷實現(xiàn)頻閃燈2.3.1MCU的Timer基本定時底層驅(qū)動構(gòu)件的使用方法1、MCU的Timer的數(shù)量和功能特性

利用定時器實現(xiàn)基本定時功能時,一般采用向上或向下計數(shù)模式。對于16位定時器,一輪計數(shù)次數(shù)最大值為65536。根據(jù)定時器原理,在時鐘源頻率、分頻系數(shù)確定的情況下,可計算出定時器一輪的定時時間范圍。任務(wù)2.3利用Timer定時中斷實現(xiàn)頻閃燈2.3.1MCU的Timer基本定時底層驅(qū)動構(gòu)件的使用方法2、MCU的Timer基本定時底層驅(qū)動構(gòu)件的組成及使用方法

Timer基本定時底層驅(qū)動構(gòu)件由timer.h頭文件和timer.c源文件組成,若要使用Timer基本定時底層驅(qū)動構(gòu)件,只需將這兩個文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實現(xiàn)對Timer的操作。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx

其中,timer.h頭文件主要包括相關(guān)頭文件的包含、一些必要的宏定義、對外接口函數(shù)的聲明,而timer.c源文件則是對外接口函數(shù)的具體實現(xiàn),初學者不必深究。

用戶只要熟悉timer.h頭文件的內(nèi)容,即可使用Timer基本定時底層驅(qū)動構(gòu)件進行編程。任務(wù)2.3利用Timer定時中斷實現(xiàn)頻閃燈2.3.1MCU的Timer基本定時底層驅(qū)動構(gòu)件的使用方法2、MCU的Timer基本定時底層驅(qū)動構(gòu)件的組成及使用方法【學以致用】

根據(jù)timer.h頭文件,寫出實現(xiàn)下列功能的函數(shù)調(diào)用語句。

(1)對定時器TIMER1進行基本定時功能初始化,定時時間10ms。

(2)使能定時器TIMER1的更新中斷。

(3)獲取定時器TIMER1的更新標志。

(4)清除定時器TIMER1的更新標志。任務(wù)2.3利用Timer定時中斷實現(xiàn)頻閃燈2.3.2利用Timer定時中斷實現(xiàn)頻閃燈的應(yīng)用層程序設(shè)計

在嵌入式軟件最小系統(tǒng)框架下,設(shè)計07_Source(應(yīng)用層軟件構(gòu)件)的文件,以實現(xiàn)小燈閃爍的效果。1)工程總頭文件includes.h:

包含04、05、06文件夾中的頭文件2)主程序源文件main.c:

初始化,指定定時器的定時時間;使能定時器更新中斷在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【思路總結(jié)】

畫出上述程序的設(shè)計和執(zhí)行流程圖,總結(jié)使用中斷的嵌入式應(yīng)用層程序設(shè)計方法。3)中斷服務(wù)程序源文件isr.c:在定時中斷服務(wù)程序中,實現(xiàn)定時功能

使用中斷的嵌入式應(yīng)用層程序,一共有兩條獨立的程序運行線,一條是main.c文件中的主程序運行路線,另一條是isr.c文件中的中斷程序運行線。任務(wù)2.3利用Timer定時中斷實現(xiàn)頻閃燈2.3.2利用Timer定時中斷實現(xiàn)頻閃燈的應(yīng)用層程序設(shè)計1)工程總頭文件includes.h:

包含04、05、06文件夾中的頭文件2)主程序源文件main.c:

定義全局變量;初始化;根據(jù)全局變量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論