《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計(jì)》 課件全套 項(xiàng)目1-8 GPIO基礎(chǔ)應(yīng)用 實(shí)現(xiàn)閃燈和開(kāi)關(guān)狀態(tài)檢測(cè)與控制功能- 利用CAN實(shí)現(xiàn)多機(jī)通信_(tái)第1頁(yè)
《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計(jì)》 課件全套 項(xiàng)目1-8 GPIO基礎(chǔ)應(yīng)用 實(shí)現(xiàn)閃燈和開(kāi)關(guān)狀態(tài)檢測(cè)與控制功能- 利用CAN實(shí)現(xiàn)多機(jī)通信_(tái)第2頁(yè)
《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計(jì)》 課件全套 項(xiàng)目1-8 GPIO基礎(chǔ)應(yīng)用 實(shí)現(xiàn)閃燈和開(kāi)關(guān)狀態(tài)檢測(cè)與控制功能- 利用CAN實(shí)現(xiàn)多機(jī)通信_(tái)第3頁(yè)
《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計(jì)》 課件全套 項(xiàng)目1-8 GPIO基礎(chǔ)應(yīng)用 實(shí)現(xiàn)閃燈和開(kāi)關(guān)狀態(tài)檢測(cè)與控制功能- 利用CAN實(shí)現(xiàn)多機(jī)通信_(tái)第4頁(yè)
《基于構(gòu)件化的嵌入式系統(tǒng)設(shè)計(jì)》 課件全套 項(xiàng)目1-8 GPIO基礎(chǔ)應(yīng)用 實(shí)現(xiàn)閃燈和開(kāi)關(guān)狀態(tài)檢測(cè)與控制功能- 利用CAN實(shí)現(xiàn)多機(jī)通信_(tái)第5頁(yè)
已閱讀5頁(yè),還剩169頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

UART

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

Timer

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

ADC

設(shè)計(jì)簡(jiǎn)易數(shù)字電壓表項(xiàng)目7:利用

SPI

實(shí)現(xiàn)多機(jī)串行通信項(xiàng)目8:利用

CAN

實(shí)現(xiàn)多機(jī)通信教

內(nèi)

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

微型計(jì)算機(jī)具有很大的通用性,所以又稱通用計(jì)算機(jī)。

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

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

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

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

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

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

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

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

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

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

嵌入式系統(tǒng)的知識(shí)體系和學(xué)習(xí)建議

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

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

嵌入式系統(tǒng)的知識(shí)體系和學(xué)習(xí)建議

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

STM32F1系列MCU簡(jiǎn)介

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

特點(diǎn):

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

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

使用外部時(shí)鐘

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

STM32F103C8T6資源:

封裝形式:

LQFP48,共有48個(gè)引腳

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

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

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

3個(gè)UART、2個(gè)SPI、2個(gè)I2C、1個(gè)CAN、1個(gè)USB、1個(gè)看門狗等

性價(jià)比高:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GPIO(GeneralPurposeInputOutput

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

GPIO的通用知識(shí)1、GPIO概念

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

light.h

頭文件

light.c

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

其中,light.h

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

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

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

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

(2)控制小燈LIGHT1點(diǎn)亮。

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

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

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

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

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

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

其中,“04底層驅(qū)動(dòng)構(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è)計(jì)及閃燈的實(shí)現(xiàn)2、公共要素軟件構(gòu)件的組成及使用方法

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

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

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

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

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

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

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

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

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

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

sw.h頭文件

sw.c

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

其中,sw.h

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

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

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

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

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

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

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

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

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

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

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

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

UART

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

Timer

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

ADC

設(shè)計(jì)簡(jiǎn)易數(shù)字電壓表項(xiàng)目7:利用

SPI

實(shí)現(xiàn)多機(jī)串行通信項(xiàng)目8:利用

CAN

實(shí)現(xiàn)多機(jī)通信教

內(nèi)

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

在項(xiàng)目1中實(shí)現(xiàn)的小燈閃爍程序采用了完全軟件延時(shí)方式,即利用循環(huán)計(jì)數(shù)程序?qū)崿F(xiàn)軟件延時(shí)功能。【項(xiàng)目導(dǎo)讀】

該方式有兩大缺點(diǎn):

①軟件延時(shí)一般用于粗略延時(shí)的場(chǎng)合;

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

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

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

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

定時(shí)器每一輪的定時(shí)時(shí)間t=

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

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

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

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

f若

f=

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

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

【學(xué)以致用】

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

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

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

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

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

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

STM32F103C8T6的中斷源見(jiàn)表2-1。

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

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

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

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

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

當(dāng)某一中斷源需要CPU為其服務(wù)時(shí),它會(huì)將對(duì)應(yīng)中斷源的中斷標(biāo)志位置1,以便向CPU發(fā)出中斷請(qǐng)求信號(hào)。2、中斷檢測(cè)、中斷響應(yīng)和中斷處理

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

【理解概念、觸類旁通】

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

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

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

CM3內(nèi)核組成。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(1)對(duì)定時(shí)器TIMER1進(jìn)行基本定時(shí)功能初始化,定時(shí)時(shí)間10ms。

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

(3)獲取定時(shí)器TIMER1的更新標(biāo)志。

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

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

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

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

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

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

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

定義全局變量;初始化;根據(jù)全局變量的值,控制外設(shè)在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【學(xué)以致用與創(chuàng)新】

(1)改變小燈閃爍的頻率,控制其他小燈閃爍。

(2)實(shí)現(xiàn)流水燈(如多個(gè)小燈輪流點(diǎn)亮)的效果。

(3)使用其他定時(shí)器獲得相同的效果。3)中斷服務(wù)程序源文件isr.c:聲明全局變量;實(shí)現(xiàn)定時(shí)功能(更新全局變量的值)【程序改進(jìn),提高系統(tǒng)的實(shí)時(shí)性和可靠性】任務(wù)2.4利用內(nèi)核定時(shí)器(SysTickTimer)中斷實(shí)現(xiàn)頻閃燈2.4.1SysTick的功能特性及其底層驅(qū)動(dòng)構(gòu)件的使用方法

ARMCortex-M內(nèi)核中包含了一個(gè)簡(jiǎn)單的定時(shí)器SysTickTimer,又稱為“滴答”定時(shí)器。SysTick定時(shí)器被捆綁在NVIC中,有效位數(shù)是24位(計(jì)數(shù)次數(shù)最大值為224),采用減1計(jì)數(shù)的工作方式,當(dāng)減1計(jì)數(shù)到0時(shí),可產(chǎn)生SysTick異常(中斷)。1、SysTick定時(shí)器的功能特性

SysTick定時(shí)器的計(jì)數(shù)時(shí)鐘頻率有兩種選擇:AHB總線時(shí)鐘頻率(內(nèi)核時(shí)鐘頻率);AHB總線時(shí)鐘頻率/8。

SysTick定時(shí)器的定時(shí)時(shí)間t=計(jì)數(shù)次數(shù)(滴答數(shù))/

計(jì)數(shù)時(shí)鐘頻率

=(1~224)/

計(jì)數(shù)時(shí)鐘頻率

若使用AHB總線時(shí)鐘頻率64MHz,則定時(shí)時(shí)間(ms級(jí))的合理范圍為1~262ms。任務(wù)2.4利用內(nèi)核定時(shí)器(SysTickTimer)中斷實(shí)現(xiàn)頻閃燈2.4.1SysTick的功能特性及其底層驅(qū)動(dòng)構(gòu)件的使用方法2、SysTick定時(shí)器底層驅(qū)動(dòng)構(gòu)件的組成及使用方法

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

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

用戶只要熟悉systick.h頭文件的內(nèi)容,即可使用SysTick定時(shí)器底層驅(qū)動(dòng)構(gòu)件進(jìn)行編程?!緦W(xué)以致用】

根據(jù)systick.h頭文件,寫出對(duì)SysTick定時(shí)器進(jìn)行初始化,定時(shí)時(shí)間為100ms的函數(shù)調(diào)用語(yǔ)句。任務(wù)2.4利用內(nèi)核定時(shí)器(SysTickTimer)中斷實(shí)現(xiàn)頻閃燈2.4.2利用SysTick定時(shí)中斷實(shí)現(xiàn)頻閃燈的應(yīng)用層程序設(shè)計(jì)

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

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

對(duì)Systick定時(shí)器初始化,指定定時(shí)時(shí)間在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx3)中斷服務(wù)程序源文件isr.c:在中斷服務(wù)程序中,實(shí)現(xiàn)定時(shí)功能【學(xué)以致用與創(chuàng)新】

(1)改變小燈閃爍的頻率。

(2)控制其他小燈閃爍。

(3)流水燈的效果。

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

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

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

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

UART

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

Timer

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

ADC

設(shè)計(jì)簡(jiǎn)易數(shù)字電壓表項(xiàng)目7:利用

SPI

實(shí)現(xiàn)多機(jī)串行通信項(xiàng)目8:利用

CAN

實(shí)現(xiàn)多機(jī)通信教

內(nèi)

項(xiàng)目3GPIO和定時(shí)器的綜合應(yīng)用——實(shí)現(xiàn)數(shù)碼管顯示、鍵盤檢測(cè)與控制、測(cè)溫功能【項(xiàng)目導(dǎo)讀】

數(shù)碼管和鍵盤分別是嵌入式智能產(chǎn)品中常用的輸出設(shè)備和輸入設(shè)備。有些實(shí)際工程應(yīng)用中需要對(duì)溫度進(jìn)行檢測(cè),實(shí)現(xiàn)某種控制功能。本項(xiàng)目是在項(xiàng)目1和項(xiàng)目2的基礎(chǔ)上,綜合利用GPIO和定時(shí)器實(shí)現(xiàn)數(shù)碼管顯示、鍵盤檢測(cè)與控制、測(cè)溫功能?!緦W(xué)習(xí)目標(biāo)】(1)掌握數(shù)碼管的通用知識(shí),包括數(shù)碼管的結(jié)構(gòu)、基于MCU直接控制的數(shù)碼管硬件構(gòu)件設(shè)計(jì)方法、數(shù)碼管的筆形碼、基于MCU直接控制的數(shù)碼管顯示原理。(2)掌握鍵盤的通用知識(shí),包括鍵盤的基本問(wèn)題和兩種接口方式。(3)熟悉帶鍵盤掃描接口的數(shù)碼管驅(qū)動(dòng)控制專用芯片TM1637的功能特點(diǎn),掌握基于TM1637的數(shù)碼管和鍵盤硬件構(gòu)件設(shè)計(jì)方法和軟件構(gòu)件設(shè)計(jì)方法。(4)掌握基于TM1637的數(shù)碼管顯示和鍵盤檢測(cè)與控制的應(yīng)用層程序設(shè)計(jì)方法。(5)熟悉1線數(shù)字式測(cè)溫器件DS18B20的主要特點(diǎn),掌握基于DS18B20的測(cè)溫硬件構(gòu)件設(shè)計(jì)方法和軟件構(gòu)件設(shè)計(jì)方法。(6)掌握基于DS18B20的測(cè)溫功能應(yīng)用層程序設(shè)計(jì)方法。項(xiàng)目3GPIO和定時(shí)器的綜合應(yīng)用——實(shí)現(xiàn)數(shù)碼管顯示、鍵盤檢測(cè)與控制、測(cè)溫功能任務(wù)3.1掌握數(shù)碼管的通用知識(shí)3.1.1數(shù)碼管的結(jié)構(gòu)任務(wù)3.1掌握數(shù)碼管的通用知識(shí)3.1.2基于MCU直接控制的數(shù)碼管硬件構(gòu)件設(shè)計(jì)

MCU需要9個(gè)GPIO引腳控制1位數(shù)碼管,因此,若MCU直接控制4位獨(dú)立數(shù)碼管,則需要36個(gè)GPIO引腳,這將導(dǎo)致硬件電路連接復(fù)雜、MCU的GPIO引腳資源緊張。數(shù)據(jù)線位選線任務(wù)3.1掌握數(shù)碼管的通用知識(shí)3.1.2基于MCU直接控制的數(shù)碼管硬件構(gòu)件設(shè)計(jì)

MCU直接控制四位一體組合數(shù)碼管時(shí),只需12個(gè)GPIO引腳,其中8個(gè)GPIO引腳控制數(shù)碼管的8根數(shù)據(jù)線,4個(gè)GPIO引腳控制數(shù)碼管的4根位選線。任務(wù)3.1掌握數(shù)碼管的通用知識(shí)3.1.3數(shù)碼管的筆形碼共陽(yáng)極數(shù)碼管的筆形碼(不帶小數(shù)點(diǎn))

若需要編制帶小數(shù)點(diǎn)的筆形碼,只需將此表中的h段改為“0”即可。

若使共陽(yáng)極數(shù)碼管的某段點(diǎn)亮,則該段對(duì)應(yīng)的數(shù)據(jù)線應(yīng)為低電平(邏輯0)。000000110xC00011111

10xF9111

0

00

00

0xA4111

0

0000

0xB01111

00

00

0x99111

00

00

0

0x9211

00000

0

0x8211111

000

0xF81

0000000

0x8011

00

0000

0x90111111110xFF

利用數(shù)組存放筆形碼

若使共陽(yáng)極數(shù)碼管的某段不點(diǎn)亮,則該段對(duì)應(yīng)的數(shù)據(jù)線應(yīng)為高電平(邏輯1)。任務(wù)3.1掌握數(shù)碼管的通用知識(shí)3.1.3數(shù)碼管的筆形碼【學(xué)以致用】

填寫表3-3中共陰極數(shù)碼管帶小數(shù)點(diǎn)的“0.”

~

“9.”對(duì)應(yīng)的筆形碼。任務(wù)3.1掌握數(shù)碼管的通用知識(shí)3.1.4基于MCU直接控制的數(shù)碼管顯示原理1、使某位數(shù)碼管顯示數(shù)據(jù)

例如,若要使第1位數(shù)碼管顯示數(shù)據(jù)“0”,則:

首先需要將位選線LED_CS1置為低電平,而其他位選線置為高電平;

然后將數(shù)碼管數(shù)據(jù)

“0”對(duì)應(yīng)的筆形碼0xC0(11000000)送至數(shù)碼管的8根數(shù)據(jù)線即可。011100000011任務(wù)3.1掌握數(shù)碼管的通用知識(shí)3.1.4基于MCU直接控制的數(shù)碼管顯示原理2、使多位數(shù)碼管輪流顯示數(shù)據(jù)

例如,若要使4位數(shù)碼管輪流顯示“1”

“2”

“3”

“4”,則程序設(shè)計(jì)流程圖如下:LED_CS1=0;LED_CS2=1;LED_CS3=1;LED_CS4=1;LED_D7~LED_D0=0xF9;

延時(shí)LED_CS1=1;LED_CS2=0;LED_CS3=1;LED_CS4=1;LED_D7~LED_D0=0xA4;

延時(shí)

LED_CS1=1;LED_CS2=1;LED_CS3=0;LED_CS4=1;LED_D7~LED_D0=0xB0;

延時(shí)

LED_CS1=1;LED_CS2=1;LED_CS3=1;LED_CS4=0;LED_D7~LED_D0=0x99;

延時(shí)

任務(wù)3.1掌握數(shù)碼管的通用知識(shí)3.1.4基于MCU直接控制的數(shù)碼管顯示原理3、使多位數(shù)碼管“同時(shí)”顯示數(shù)據(jù)

若將延時(shí)時(shí)間縮短至5ms,則給人感覺(jué)4位數(shù)碼管

“同時(shí)”顯示“1”

“2”

“3”

“4”(視覺(jué)暫留)LED_CS1=0;LED_CS2=1;LED_CS3=1;LED_CS4=1;LED_D7~LED_D0=0xF9;

延時(shí)LED_CS1=1;LED_CS2=0;LED_CS3=1;LED_CS4=1;LED_D7~LED_D0=0xA4;

延時(shí)

LED_CS1=1;LED_CS2=1;LED_CS3=0;LED_CS4=1;LED_D7~LED_D0=0xB0;

延時(shí)

LED_CS1=1;LED_CS2=1;LED_CS3=1;LED_CS4=0;LED_D7~LED_D0=0x99;

延時(shí)

——?jiǎng)討B(tài)掃描顯示5ms5ms5ms5ms【知識(shí)鞏固】

簡(jiǎn)述數(shù)碼管動(dòng)態(tài)掃描顯示的原理和實(shí)現(xiàn)方法。任務(wù)3.2掌握鍵盤的通用知識(shí)3.2.1鍵盤的基本問(wèn)題1、鍵盤操作、抖動(dòng)問(wèn)題4引腳直插式鍵盤按鍵實(shí)物圖及內(nèi)部結(jié)構(gòu)圖2引腳貼片式鍵盤按鍵實(shí)物圖在嵌入式系統(tǒng)中,有兩種常用的鍵盤按鍵。任務(wù)3.2掌握鍵盤的通用知識(shí)3.2.1鍵盤的基本問(wèn)題1、鍵盤操作、抖動(dòng)問(wèn)題VCC按下抖動(dòng)釋放抖動(dòng)穩(wěn)定閉合5~10ms5~10ms理想實(shí)際

操作者幾乎感覺(jué)不到抖動(dòng),但MCU以為操作者在此期間連續(xù)操作若干次鍵,從而引起按鍵命令的錯(cuò)誤執(zhí)行或重復(fù)執(zhí)行,因此需要對(duì)按鍵抖動(dòng)進(jìn)行處理。(1)濾波去抖:實(shí)現(xiàn)鍵操作時(shí)電壓的變化為理想的矩形波。(2)延時(shí)躲抖:MCU檢測(cè)到有鍵被按下時(shí),先軟件延時(shí)10ms以避開(kāi)按鍵抖動(dòng)(惹不起但可以躲得起),然后再判斷該鍵是否被按下。例如:電容濾波去抖。0.1uF任務(wù)3.2掌握鍵盤的通用知識(shí)3.2.1鍵盤的基本問(wèn)題2、鍵盤連擊問(wèn)題

當(dāng)按下某個(gè)鍵時(shí),如果操作者還沒(méi)有釋放該鍵,則MCU以為操作者在連續(xù)操作該鍵(連擊),對(duì)應(yīng)的按鍵功能程序?qū)?huì)反復(fù)被執(zhí)行。大多數(shù)應(yīng)用場(chǎng)合需要防止連擊,即一次按鍵只讓MCU執(zhí)行一次功能程序,該鍵不釋放就不執(zhí)行第二次。

在軟件設(shè)計(jì)時(shí),可這樣做:當(dāng)MCU檢測(cè)到某個(gè)鍵被按下時(shí),只執(zhí)行一次功能程序,然后等待按鍵釋放。任務(wù)3.2掌握鍵盤的通用知識(shí)3.2.2鍵盤的兩種接口方式(基于MCU引腳直接連接)1、獨(dú)立式鍵盤

各個(gè)鍵相互獨(dú)立,按照一對(duì)一的方式連接到MCU的GPIO引腳或外部中斷引腳上,另一端接地。

采用查詢掃描時(shí),MCU可通過(guò)直接讀取KEY引腳的電平狀態(tài)來(lái)判斷鍵是否被按下。

采用外部中斷掃描時(shí),一般利用按鍵的下降沿觸發(fā)MCU中斷。

查鍵方便,但占用MCU的I/O引腳資源較多,因此一般適用于鍵較少的場(chǎng)合。

任務(wù)3.2掌握鍵盤的通用知識(shí)3.2.2鍵盤的兩種接口方式(基于MCU引腳直接連接)2、矩陣式鍵盤

4×4=16個(gè)鍵,只需要MCU的8個(gè)GPIO引腳,應(yīng)用于鍵較多的場(chǎng)合。

結(jié)構(gòu)原理:

R1~R4引腳作為行線,C1~C4引腳作為列線,在每個(gè)行線和列線的交叉點(diǎn)放置一個(gè)鍵,當(dāng)某個(gè)鍵被按下時(shí),其對(duì)應(yīng)的行線和列線短路,MCU通過(guò)檢測(cè)是否有行線和列線短路來(lái)確定是否有鍵被按下,并確定被按下鍵的位置。行線列線任務(wù)3.2掌握鍵盤的通用知識(shí)【知識(shí)鞏固】(1)按鍵抖動(dòng)處理方法有哪些?它們的優(yōu)點(diǎn)和缺點(diǎn)分別是什么?(2)什么是鍵盤連擊?如何防止鍵盤連擊現(xiàn)象?按鍵連擊可以用于什么場(chǎng)合?(3)鍵盤有幾種接口方式?分別對(duì)應(yīng)的適用場(chǎng)合是什么?任務(wù)3.3基于TM1637的數(shù)碼管和鍵盤構(gòu)件設(shè)計(jì)

前面學(xué)習(xí)的數(shù)碼管硬件構(gòu)件和鍵盤硬件構(gòu)件,均采用MCU的GPIO引腳直接連接方式,其優(yōu)點(diǎn)是原理簡(jiǎn)單。但在同時(shí)需要使用數(shù)碼管和鍵盤的應(yīng)用系統(tǒng)設(shè)計(jì)中,若使用上述硬件構(gòu)件,則明顯存在占用過(guò)多GPIO引腳資源的缺點(diǎn)。

為了解決這一問(wèn)題,可改用專門的數(shù)碼管和鍵盤驅(qū)動(dòng)芯片(如TM1637芯片)來(lái)簡(jiǎn)化硬件電路。

任務(wù)3.3基于TM1637的數(shù)碼管和鍵盤構(gòu)件設(shè)計(jì)3.3.1基于TM1637的數(shù)碼管和鍵盤硬件構(gòu)件設(shè)計(jì)1、TM1637功能特點(diǎn)

TM1637是一種帶鍵盤掃描接口的數(shù)碼管驅(qū)動(dòng)控制專用芯片??芍С肿疃?/p>

6位

8段共陽(yáng)極數(shù)碼管顯示;支持

2×8矩陣鍵盤掃描;兩線串行接口(CLK、DIO),即MCU只需兩個(gè)GPIO引腳即可與TM1637進(jìn)行串行通信。數(shù)碼管數(shù)據(jù)線/鍵盤掃描引腳數(shù)碼管位選線引腳時(shí)鐘線引腳串行數(shù)據(jù)輸入/輸出線引腳鍵盤數(shù)據(jù)輸入引腳電源引腳(3.3~5V)接地引腳任務(wù)3.3基于TM1637的數(shù)碼管和鍵盤構(gòu)件設(shè)計(jì)3.3.1基于TM1637的數(shù)碼管和鍵盤硬件構(gòu)件設(shè)計(jì)1、TM1637功能特點(diǎn)任務(wù)3.3基于TM1637的數(shù)碼管和鍵盤構(gòu)件設(shè)計(jì)3.3.1基于TM1637的數(shù)碼管和鍵盤硬件構(gòu)件設(shè)計(jì)2、基于TM1637的數(shù)碼管和鍵盤硬件構(gòu)件設(shè)計(jì)圖【思考總結(jié)】

使用TM1637驅(qū)動(dòng)數(shù)碼管和鍵盤,與基于MCU的GPIO引腳直接驅(qū)動(dòng)數(shù)碼管和鍵盤,有什么好處??jī)煞N驅(qū)動(dòng)方式有何區(qū)別?任務(wù)3.3基于TM1637的數(shù)碼管和鍵盤構(gòu)件設(shè)計(jì)

基于TM1637的數(shù)碼管和鍵盤軟件構(gòu)件TM1637_LED_KB由tm1637_led_kb.h頭文件和tm1637_led_kb.c源文件組成,若使用該軟件構(gòu)件,則只需將這兩個(gè)文件添加到所建工程的05_App(應(yīng)用外設(shè)軟件構(gòu)件)文件夾中,即可實(shí)現(xiàn)MCU通過(guò)TM1637控制數(shù)碼管顯示功能和鍵盤掃描功能。

其中,tm1637_led_kb.h頭文件主要包括頭文件的包含、必要的宏定義、存放數(shù)碼管筆形碼的數(shù)組、存放鍵盤編碼和對(duì)應(yīng)鍵名的數(shù)組以及對(duì)外接口函數(shù)的聲明,而tm1637_led_kb.c源文件是該軟件構(gòu)件對(duì)外接口函數(shù)的具體實(shí)現(xiàn)。見(jiàn)工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx用戶只要熟悉tm1637_led_kb.h

頭文件的內(nèi)容,即可使用該軟件構(gòu)件進(jìn)行編程。3.3.2基于TM1637的數(shù)碼管和鍵盤軟件構(gòu)件的組成及使用方法任務(wù)3.3基于TM1637的數(shù)碼管和鍵盤構(gòu)件設(shè)計(jì)【學(xué)以致用】

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

(1)對(duì)TM1637進(jìn)行初始化。

(2)TM1637驅(qū)動(dòng)數(shù)碼管動(dòng)態(tài)顯示保存在數(shù)組disp[4]中的數(shù)據(jù)。

(3)TM1637控制數(shù)碼管清屏。

(4)將用于保存數(shù)碼管顯示數(shù)據(jù)的數(shù)組disp[4]中的元素值更新為{5,6,7,8}。

(5)將TM1637掃描2×8矩陣式鍵盤而獲取的按下鍵的鍵名賦給變量key_name。3.3.2基于TM1637的數(shù)碼管和鍵盤軟件構(gòu)件的組成及使用方法任務(wù)3.4基于TM1637的數(shù)碼管顯示的應(yīng)用層程序設(shè)計(jì)3.4.1使用軟件延時(shí)實(shí)現(xiàn)數(shù)碼管先后顯示不同的數(shù)據(jù)

在嵌入式軟件最小系統(tǒng)框架下,設(shè)計(jì)07_Source(應(yīng)用層軟件構(gòu)件)的文件,以實(shí)現(xiàn)數(shù)碼管先后顯示不同的數(shù)據(jù)。1)工程總頭文件includes.h:包含04、05、06文件夾中的頭文件2)主程序源文件main.c:

定義數(shù)組(數(shù)碼管顯示數(shù)據(jù)緩沖區(qū));初始化;

在主循環(huán)中實(shí)現(xiàn)數(shù)碼管先后顯示不同的數(shù)據(jù)在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【學(xué)以致用與創(chuàng)新】

(1)在主循環(huán)中,實(shí)現(xiàn)4位數(shù)碼管先后顯示2組數(shù)據(jù)。例如在1秒內(nèi)顯示年份“2023”,在下1秒內(nèi)顯示月日“0317”。

(2)在主循環(huán)中,實(shí)現(xiàn)4位數(shù)碼管顯示秒計(jì)數(shù)值。

(3)實(shí)現(xiàn)數(shù)碼管的高位滅零功能:對(duì)于數(shù)據(jù)“0015”,數(shù)碼管上只顯示“15”,而高位的“00”不顯示。任務(wù)3.4基于TM1637的數(shù)碼管顯示的應(yīng)用層程序設(shè)計(jì)3.4.2使用定時(shí)中斷實(shí)現(xiàn)數(shù)碼管先后顯示不同的數(shù)據(jù)

在嵌入式軟件最小系統(tǒng)框架下,設(shè)計(jì)07_Source(應(yīng)用層軟件構(gòu)件)的文件,以實(shí)現(xiàn)數(shù)碼管先后隔秒顯示年份和月日的效果。1)工程總頭文件includes.h:

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

定義全局?jǐn)?shù)組(存放數(shù)碼管顯示的數(shù)據(jù));

在主程序中,初始化;

在主循環(huán)中,數(shù)碼管顯示全局?jǐn)?shù)組中對(duì)應(yīng)的數(shù)據(jù)在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【學(xué)以致用與創(chuàng)新】

(1)實(shí)現(xiàn)數(shù)碼管顯示秒計(jì)數(shù)值。

(2)實(shí)現(xiàn)數(shù)碼管顯示分和秒的計(jì)數(shù)值,并且隔秒顯示分和秒之間的小數(shù)點(diǎn),即實(shí)現(xiàn)顯示相對(duì)時(shí)鐘的效果。3)中斷服務(wù)程序源文件isr.c:聲明全局?jǐn)?shù)組;

在定時(shí)中斷服務(wù)程序中,實(shí)現(xiàn)定時(shí)功能(更新全局?jǐn)?shù)組的數(shù)據(jù))任務(wù)3.5基于TM1637的鍵盤檢測(cè)與控制的應(yīng)用層程序設(shè)計(jì)3.5.1鍵盤檢測(cè)與控制的查詢程序流程任務(wù)3.5基于TM1637的鍵盤檢測(cè)與控制的應(yīng)用層程序設(shè)計(jì)3.5.2應(yīng)用實(shí)例參考程序

在嵌入式軟件最小系統(tǒng)框架下,設(shè)計(jì)07_Source(應(yīng)用層軟件構(gòu)件)的文件,以實(shí)現(xiàn)對(duì)某個(gè)鍵(如1號(hào)鍵)的按鍵次數(shù)進(jìn)行統(tǒng)計(jì),并在數(shù)碼管上顯示該鍵的按鍵次數(shù)。1)工程總頭文件includes.h:

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

定義局部變量,初始化;

在主循環(huán)中,掃描鍵盤并執(zhí)行按鍵功能程序在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【學(xué)以致用與創(chuàng)新】

(1)實(shí)現(xiàn)在某位數(shù)碼管上顯示按鍵的鍵名。

(2)實(shí)現(xiàn)在4位數(shù)碼管上分別顯示按照順序按下的4個(gè)鍵的鍵名。例如,按照順序依次按'1'、'2'、'3'、'4'鍵時(shí),4位數(shù)碼管依次顯示“1”“2”“3”“4”?!緦?shí)踐驗(yàn)證】

將等待按鍵釋放對(duì)應(yīng)的語(yǔ)句去掉,重新運(yùn)行程序,觀察實(shí)驗(yàn)現(xiàn)象,體會(huì)語(yǔ)句的作用。任務(wù)3.6基于DS18B20的測(cè)溫功能設(shè)計(jì)與實(shí)現(xiàn)3.6.1DS18B20的主要特點(diǎn)和基于DS18B20的測(cè)溫硬件構(gòu)件設(shè)計(jì)1、DS18B20的功能特點(diǎn)

DS18B20是

1線數(shù)字式

測(cè)溫器件。其特點(diǎn)如下:

(1)只有3個(gè)工作引腳:電源引腳VDD、接地引腳GND和數(shù)據(jù)總線引腳DQ。

(2)MCU只需要一個(gè)GPIO引腳即可與DS18B20的DQ引腳進(jìn)行串行總線通信,其中MCU作為主設(shè)備,DS18B20作為從設(shè)備,可靈活采用單主單從或一主多從的總線結(jié)構(gòu),實(shí)現(xiàn)單點(diǎn)或多點(diǎn)測(cè)溫。

(3)測(cè)量溫度范圍為-55℃~+125℃,其中在-10℃至+85℃精確度為±0.5℃。其最高分辨率(默認(rèn)設(shè)置)為12位(二進(jìn)制),對(duì)應(yīng)0.0625℃的溫度分辨率。任務(wù)3.6基于DS18B20的測(cè)溫功能設(shè)計(jì)與實(shí)現(xiàn)3.6.1DS18B20的主要特點(diǎn)和基于DS18B20的測(cè)溫硬件構(gòu)件設(shè)計(jì)2、基于DS18B20的測(cè)溫硬件構(gòu)件設(shè)計(jì)圖任務(wù)3.6基于DS18B20的測(cè)溫功能設(shè)計(jì)與實(shí)現(xiàn)3.6.2基于DS18B20的測(cè)溫軟件構(gòu)件的組成及使用方法

基于DS18B20的測(cè)溫軟件構(gòu)件由ds18b20.h頭文件和ds18b20.c源文件組成,若使用該軟件構(gòu)件,則只需將這兩個(gè)文件添加到所建工程的05_App(應(yīng)用外設(shè)軟件構(gòu)件)文件夾中,即可實(shí)現(xiàn)MCU通過(guò)1個(gè)GPIO引腳獲取所測(cè)溫度的功能。

其中,ds18b20.h頭文件主要包括頭文件的包含、必要的宏定義以及對(duì)外接口函數(shù)的聲明,而ds18b20.c源文件是該軟件構(gòu)件對(duì)外接口函數(shù)的具體實(shí)現(xiàn)。見(jiàn)工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx用戶只要熟悉ds18b20.h

頭文件的內(nèi)容,即可使用該軟件構(gòu)件進(jìn)行編程。任務(wù)3.6基于DS18B20的測(cè)溫功能設(shè)計(jì)與實(shí)現(xiàn)3.6.3基于DS18B20的測(cè)溫功能應(yīng)用層程序設(shè)計(jì)

在嵌入式軟件最小系統(tǒng)框架下,設(shè)計(jì)07_Source(應(yīng)用層軟件構(gòu)件)的文件,使用SysTick定時(shí)中斷實(shí)現(xiàn)每隔1s進(jìn)行一次DS18B20溫度轉(zhuǎn)換并通過(guò)數(shù)碼管顯示溫度的功能。1)工程總頭文件includes

溫馨提示

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