




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
嵌入式系統(tǒng)設(shè)計(jì)
為了實(shí)現(xiàn)嵌入式系統(tǒng)設(shè)計(jì)的可移植和可復(fù)用,嵌入式硬件和嵌入式軟件均采用構(gòu)件化的設(shè)計(jì)思想,即對嵌入式硬件和嵌入式軟件進(jìn)行封裝,供系統(tǒng)設(shè)計(jì)者調(diào)用,并倡導(dǎo)嵌入式軟件分層設(shè)計(jì)的理念,以大幅度降低嵌入式技術(shù)學(xué)習(xí)難度和開發(fā)難度。
本書特色:項(xiàng)目任務(wù)驅(qū)動,突出學(xué)以致用,注重實(shí)踐創(chuàng)新。每個(gè)項(xiàng)目且均采用了“通用知識”→“嵌入式構(gòu)件設(shè)計(jì)”→“應(yīng)用層程序設(shè)計(jì)”→“學(xué)以致用與創(chuàng)新”的學(xué)習(xí)流程。采用“搭積木”的思想,逐步提高嵌入式系統(tǒng)設(shè)計(jì)能力。
本書可作為高等學(xué)校電子信息類、計(jì)算機(jī)類、自動化類等專業(yè)的嵌入式系統(tǒng)設(shè)計(jì)教材,也可作為嵌入式技術(shù)培訓(xùn)教材,還可供從事嵌入式技術(shù)開發(fā)的工程技術(shù)人員參考。項(xiàng)目1:GPIO基礎(chǔ)應(yīng)用—實(shí)現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能項(xiàng)目2:利用定時(shí)中斷實(shí)現(xiàn)頻閃燈項(xiàng)目3:GPIO和定時(shí)器的綜合應(yīng)用—實(shí)現(xiàn)數(shù)碼管顯示、鍵盤測控、測溫功能項(xiàng)目4:利用
UART
實(shí)現(xiàn)上位機(jī)和下位機(jī)的通信項(xiàng)目5:利用
Timer
實(shí)現(xiàn)PWM和輸入捕獲功能項(xiàng)目6:利用
ADC
設(shè)計(jì)簡易數(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)閃燈和開關(guān)狀態(tài)檢測與控制功能【項(xiàng)目導(dǎo)讀】在現(xiàn)代生活中,燈光除了用于照明,還廣泛用于氛圍營造(如城市景觀燈、舞臺變幻燈、廣告霓虹燈等)或狀態(tài)指示(如交通信號燈、設(shè)備狀態(tài)指示燈等)。在嵌入式系統(tǒng)中,LED小燈是必備的狀態(tài)指示設(shè)備。另外,在現(xiàn)實(shí)生活的很多場合中,通過開關(guān)(switch)控制用電設(shè)備。通過對微控制器編程,可以控制小燈的狀態(tài)(點(diǎn)亮或熄滅),也可以檢測開關(guān)的狀態(tài)(閉合或斷開),從而實(shí)現(xiàn)軟件干預(yù)硬件?!緦W(xué)習(xí)目標(biāo)】(1)熟悉嵌入式系統(tǒng)的概念、組成以及嵌入式技術(shù)學(xué)習(xí)方法。(2)熟悉嵌入式芯片STM32F103C8T6資源和硬件最小系統(tǒng)。(3)理解GPIO(通用輸入/輸出)的通用知識,掌握微控制器GPIO底層驅(qū)動構(gòu)件的使用方法。(4)掌握小燈、開關(guān)等應(yīng)用外設(shè)的嵌入式硬件構(gòu)件和嵌入式軟件構(gòu)件的設(shè)計(jì)方法和使用方法。(5)熟悉嵌入式軟件最小系統(tǒng)的工程文件組織方法,并能進(jìn)行閃燈、流水燈和開關(guān)檢測與控制功能的應(yīng)用層程序設(shè)計(jì)。(6)掌握嵌入式軟件集成開發(fā)環(huán)境KeilMDK及目標(biāo)程序下載軟件J-Flash的使用方法,為后續(xù)學(xué)習(xí)奠定良好的基礎(chǔ)。*(7)熟悉微控制器GPIO底層驅(qū)動構(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ī)。
測控領(lǐng)域的計(jì)算機(jī)系統(tǒng)是嵌入到應(yīng)用系統(tǒng)中,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟、硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、成本、體積、可靠性、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng),即嵌入式計(jì)算機(jī)系統(tǒng),簡稱嵌入式系統(tǒng)(EmbeddedSystem)。
通俗地說,除了通用計(jì)算機(jī)(如臺式計(jì)算機(jī)和筆記本計(jì)算機(jī))外,所有包含CPU的系統(tǒng)都是嵌入式系統(tǒng),其中其中以32位/64位ARM微處理器為核心的嵌入式系統(tǒng)應(yīng)用越來越廣泛。任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學(xué)習(xí)方法1.1.1嵌入式系統(tǒng)的概念和組成1、通用計(jì)算機(jī)和嵌入式計(jì)算機(jī)
目前,ARM主要有以下3個(gè)系列的內(nèi)核,對應(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),主要面向汽車電子等對實(shí)時(shí)性要求很高的領(lǐng)域。(3)Cortex-M內(nèi)核的微控制器(MicroControllerUnit,MCU,國內(nèi)也稱為單片機(jī)),主要面向工業(yè)控制、農(nóng)業(yè)控制、智能儀器儀表、智能家電、機(jī)電產(chǎn)品和汽車電子等領(lǐng)域。【知識鞏固】簡述通用計(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與其他部件交互是通過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)的概念和組成【知識鞏固】(1)簡述MCU的基本含義。(2)畫出以MCU為核心的嵌入式系統(tǒng)組成框圖。1.1.2
嵌入式系統(tǒng)的知識體系和學(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、開關(guān)SW、鍵盤KB、數(shù)碼管LED、液晶LCD等)設(shè)計(jì)。
嵌入式軟件構(gòu)件設(shè)計(jì)采用分層設(shè)計(jì)思想,自下而上依次是“底層驅(qū)動構(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í)難度和開發(fā)難度,嵌入式硬件和軟件均需采用“構(gòu)件化”設(shè)計(jì)。
其中底層驅(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è)計(jì)的。
隨著技術(shù)的發(fā)展,MCU的硬件集成度越來越高,使得嵌入式硬件設(shè)計(jì)難度不斷降低,因此嵌入式軟件設(shè)計(jì)在整個(gè)嵌入式系統(tǒng)開發(fā)中所占的分量越來越大。1.1.2
嵌入式系統(tǒng)的知識體系和學(xué)習(xí)建議
嵌入式軟件設(shè)計(jì)主要采用C語言及少量的匯編語言。
任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學(xué)習(xí)方法1.1.2
嵌入式系統(tǒng)的知識體系和學(xué)習(xí)建議
嵌入式軟件設(shè)計(jì)與調(diào)試是在嵌入式硬件的基礎(chǔ)上協(xié)同進(jìn)行的,其過程是在PC上利用嵌入式軟件開發(fā)環(huán)境(如KeilMDK、IAR等)進(jìn)行程序的編輯、編譯和連接,生成工程對應(yīng)的目標(biāo)代碼;最后將生成的目標(biāo)代碼通過寫入器下載到嵌入式芯片中運(yùn)行與調(diào)試。任務(wù)1.1熟悉嵌入式系統(tǒng)和課程學(xué)習(xí)方法MCU寫入器任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)1.2.1
STM32F1系列MCU簡介
內(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)存儲器:64KB的Flash存儲器;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)類市場等多種應(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)變量、臨時(shí)變量(堆??臻g)等。1、MCU的存儲映射
ARMCortex-M處理器直接尋址空間為4GB,地址范圍為0x0000_0000~0xFFFF_FFFF。
存儲映射,是指將4GB空間看作存儲器,對各類物理資源(Flash存儲器、SRAM、外設(shè)等)在4GB空間內(nèi)進(jìn)行統(tǒng)一編址,CPU可通過直接地址訪問物理資源。
(3)外設(shè)(GPIO、UART、Timer、ADC等)寄存器存儲映射,只需了解,實(shí)際應(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ù)的引腳,包括電源、復(fù)位、晶振、程序?qū)懭虢涌冢⊿WD)等引腳。1.2.2
MCU存儲映射、引腳功能與硬件最小系統(tǒng)
從需求和供給的角度,將MCU引腳分為硬件最小系統(tǒng)引腳和I/O端口資源類引腳兩大類。任務(wù)1.2熟悉MCU資源和硬件最小系統(tǒng)2、MCU的引腳功能
I/O引腳一般具有多個(gè)復(fù)用功能,詳見表1-4。在實(shí)際應(yīng)用時(shí)只能使用其中的一個(gè)功能。在嵌入式系統(tǒng)設(shè)計(jì)中,需要根據(jù)所使用的外設(shè)(含片內(nèi)外設(shè)),對MCU的引腳資源進(jìn)行統(tǒng)籌規(guī)劃,以免多個(gè)外設(shè)使用相同的引腳而相互沖突。
(2)I/O端口資源類引腳:對外提供服務(wù)。
STM32F103C8T6具有A、B、C、D四個(gè)端口,37個(gè)I/O引腳。若使用內(nèi)部時(shí)鐘,則除去硬件最小系統(tǒng)所使用的的SWD接口的2個(gè)引腳(PA13、PA14)和啟動方式所使用的1個(gè)引腳(PB2),在實(shí)際應(yīng)用中,可有34個(gè)對外提供服務(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)部程序正常運(yùn)行的最小規(guī)模的電路,主要包括MCU和電源、晶振、復(fù)位、寫入調(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。
某個(gè)引腳作為通用輸入引腳,MCU可以通過讀取其內(nèi)部寄存器的值“1”或“0”,以確定該引腳的輸入狀態(tài)是高電平還是低電平,即開關(guān)量輸入。
某個(gè)引腳作為通用輸出引腳,MCU可以通過向其內(nèi)部寄存器寫“1”或“0”,以控制該引腳輸出高電平或低電平,即開關(guān)量輸出。
若MCU的某個(gè)引腳通過一個(gè)電阻接電源(VCC),則該電阻被稱為“上拉電阻”。
若MCU的某個(gè)引腳通過一個(gè)電阻接地(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小燈和蜂鳴器的原理?
為了實(shí)現(xiàn)程序的可移植和可復(fù)用,減小重復(fù)勞動,MCU底層驅(qū)動程序封裝成構(gòu)件。GPIO底層驅(qū)動構(gòu)件由gpio.h頭文件和gpio.c源文件組成,若要使用GPIO底層驅(qū)動構(gòu)件,只需將這兩個(gè)文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實(shí)現(xiàn)對GPIO引腳的操作。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx
其中,gpio.h頭文件主要包括相關(guān)頭文件的包含、一些必要的宏定義、對外接口函數(shù)的聲明,而gpio.c源文件則是對外接口函數(shù)的具體實(shí)現(xiàn),初學(xué)者不必深究。
用戶只要熟悉gpio.h頭文件的內(nèi)容,即可使用GPIO底層驅(qū)動構(gòu)件進(jìn)行編程,實(shí)現(xiàn)通過GPIO對不同外設(shè)進(jìn)行檢測或控制的功能(如檢測開關(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è)計(jì)及閃燈的實(shí)現(xiàn)
為了實(shí)現(xiàn)嵌入式系統(tǒng)設(shè)計(jì)在不同MCU和不同應(yīng)用場合中的可移植和可復(fù)用,降低嵌入式技術(shù)學(xué)習(xí)難度和開發(fā)難度,嵌入式硬件和軟件均需采用“構(gòu)件化”設(shè)計(jì)?,F(xiàn)以小燈構(gòu)件設(shè)計(jì)為例,說明嵌入式硬件構(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)識為硬件構(gòu)件的接口注釋,以便于理解該接口的含義和功能;虛線框外的正體標(biāo)識為硬件構(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)對小燈的控制。
其中,light.h
頭文件主要包括相關(guān)頭文件的包含、小燈硬件構(gòu)件相關(guān)的宏定義、小燈構(gòu)件對外接口函數(shù)的聲明。light.c
源文件是小燈構(gòu)件對外接口函數(shù)的具體實(shí)現(xià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)用語句。
(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),對應(yīng)的程序框架稱為“嵌入式軟件最小系統(tǒng)”(具體解釋詳見表1-5)。
在此框架下可通過添加其他軟件構(gòu)件和修改應(yīng)用層程序(工程源程序)完成不同功能的軟件設(shè)計(jì)。
對初學(xué)者,學(xué)習(xí)重點(diǎn)是:①熟悉04_Driver(MCU底層驅(qū)動構(gòu)件)、05_App(應(yīng)用外設(shè)軟件構(gòu)件)和
06_Soft(通用軟件構(gòu)件)這幾個(gè)文件夾中的頭文件內(nèi)容,掌握對外接口函數(shù)的調(diào)用方法;②根據(jù)系統(tǒng)功能需求,進(jìn)行應(yīng)用層程序設(shè)計(jì)和優(yōu)化,即設(shè)計(jì)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è)計(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)件的使用方法。見工程文件:..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)新】請通過修改主程序的代碼,分別完成:(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、閃燈效果的測試任務(wù)1.5開關(guān)狀態(tài)檢測與控制功能的設(shè)計(jì)與實(shí)現(xiàn)1.5.1
開關(guān)硬件構(gòu)件和軟件構(gòu)件的設(shè)計(jì)及使用方法1、開關(guān)硬件構(gòu)件的設(shè)計(jì)及使用方法a)開關(guān)硬件構(gòu)件b)開關(guān)硬件構(gòu)件與MCU的引腳連接任務(wù)1.5開關(guān)狀態(tài)檢測與控制功能的設(shè)計(jì)與實(shí)現(xiàn)1.5.1
開關(guān)硬件構(gòu)件和軟件構(gòu)件的設(shè)計(jì)及使用方法2、開關(guān)軟件構(gòu)件的組成、設(shè)計(jì)及使用方法
開關(guān)軟件構(gòu)件由
sw.h頭文件
和
sw.c
源文件組成,若要使用開關(guān)軟件構(gòu)件,只需將這兩個(gè)文件添加到所建工程的05_App(應(yīng)用外設(shè)軟件構(gòu)件)文件夾中,即可實(shí)現(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ù)的具體實(shí)現(xiàn)。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx用戶只要熟悉sw.h
頭文件的內(nèi)容,即可使用開關(guān)軟件構(gòu)件進(jìn)行編程。【學(xué)以致用】根據(jù)sw.h頭文件,寫出實(shí)現(xiàn)下列功能的函數(shù)調(diào)用語句。(1)將開關(guān)SW1初始化。(2)獲取開關(guān)SW1的狀態(tài)。任務(wù)1.5開關(guān)狀態(tài)檢測與控制功能的設(shè)計(jì)與實(shí)現(xiàn)1.5.2
開關(guān)狀態(tài)檢測與控制功能的應(yīng)用層程序設(shè)計(jì)
利用小燈軟件構(gòu)件和開關(guān)軟件構(gòu)件,編程實(shí)現(xiàn)開關(guān)狀態(tài)檢測與控制功能:開關(guān)SW1閉合時(shí),小燈LIGHT1亮;SW1斷開時(shí),小燈LIGHT1滅。任務(wù)1.5開關(guān)狀態(tài)檢測與控制功能的設(shè)計(jì)與實(shí)現(xiàn)1.5.2
開關(guān)狀態(tài)檢測與控制功能的應(yīng)用層程序設(shè)計(jì)見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx
在嵌入式軟件最小系統(tǒng)框架下,設(shè)計(jì)07_Source(應(yīng)用層軟件構(gòu)件)的文件,以實(shí)現(xiàn)開關(guān)狀態(tài)檢測與控制功能。1)工程總頭文件includes.h:包含04、05、06文件夾中的頭文件2)主程序源文件main.c:
初始化,在主循環(huán)中查詢開關(guān)狀態(tài),并控制小燈亮、滅【學(xué)以致用與創(chuàng)新】實(shí)現(xiàn)多路開關(guān)狀態(tài)檢測與控制功能。
嵌入式系統(tǒng)設(shè)計(jì)
為了實(shí)現(xiàn)嵌入式系統(tǒng)設(shè)計(jì)的可移植和可復(fù)用,嵌入式硬件和嵌入式軟件均采用構(gòu)件化的設(shè)計(jì)思想,即對嵌入式硬件和嵌入式軟件進(jìn)行封裝,供系統(tǒng)設(shè)計(jì)者調(diào)用,并倡導(dǎo)嵌入式軟件分層設(shè)計(jì)的理念,以大幅度降低嵌入式技術(shù)學(xué)習(xí)難度和開發(fā)難度。
本書特色:項(xiàng)目任務(wù)驅(qū)動,突出學(xué)以致用,注重實(shí)踐創(chuàng)新。每個(gè)項(xiàng)目且均采用了“通用知識”→“嵌入式構(gòu)件設(shè)計(jì)”→“應(yīng)用層程序設(shè)計(jì)”→“學(xué)以致用與創(chuàng)新”的學(xué)習(xí)流程。采用“搭積木”的思想,逐步提高嵌入式系統(tǒng)設(shè)計(jì)能力。
本書可作為高等學(xué)校電子信息類、計(jì)算機(jī)類、自動化類等專業(yè)的嵌入式系統(tǒng)設(shè)計(jì)教材,也可作為嵌入式技術(shù)培訓(xùn)教材,還可供從事嵌入式技術(shù)開發(fā)的工程技術(shù)人員參考。項(xiàng)目1:GPIO基礎(chǔ)應(yīng)用—實(shí)現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能項(xiàng)目2:利用定時(shí)中斷實(shí)現(xiàn)頻閃燈項(xiàng)目3:GPIO和定時(shí)器的綜合應(yīng)用—實(shí)現(xiàn)數(shù)碼管顯示、鍵盤測控、測溫功能項(xiàng)目4:利用
UART
實(shí)現(xiàn)上位機(jī)和下位機(jī)的通信項(xiàng)目5:利用
Timer
實(shí)現(xiàn)PWM和輸入捕獲功能項(xiàng)目6:利用
ADC
設(shè)計(jì)簡易數(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í)的場合;
②執(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í)間,并啟動定時(shí)/計(jì)數(shù)器計(jì)數(shù),當(dāng)定時(shí)時(shí)間到時(shí),它將自動產(chǎn)生一個(gè)定時(shí)輸出信號(通常是中斷請求信號)告知CPU,使CPU轉(zhuǎn)去執(zhí)行定時(shí)中斷服務(wù)程序,從而實(shí)現(xiàn)某些定時(shí)功能。定時(shí)/計(jì)數(shù)器在計(jì)數(shù)期間,與CPU并行工作,不占用CPU的工作時(shí)間。該方式通過簡單的程序設(shè)置即可實(shí)現(xiàn)準(zhǔn)確的定時(shí)?!卷?xiàng)目導(dǎo)讀】
【學(xué)習(xí)目標(biāo)】(1)理解定時(shí)器的定時(shí)原理。(2)理解中斷的通用知識,包括中斷的基本概念、基本過程及管理機(jī)制。(3)熟悉MCU內(nèi)部定時(shí)器的功能特性,掌握MCU內(nèi)部定時(shí)器底層驅(qū)動構(gòu)件的使用方法。(4)學(xué)會利用MCU內(nèi)部定時(shí)中斷功能實(shí)現(xiàn)頻閃燈或流水燈的應(yīng)用層程序設(shè)計(jì)方法。*(5)熟悉MCU內(nèi)部定時(shí)器底層驅(qū)動構(gòu)件源文件的設(shè)計(jì)方法。項(xiàng)目2:利用定時(shí)中斷實(shí)現(xiàn)頻閃燈任務(wù)2.1理解定時(shí)器的定時(shí)原理定時(shí)器本質(zhì)上是一個(gè)對計(jì)數(shù)時(shí)鐘進(jìn)行周期統(tǒng)計(jì)的計(jì)數(shù)器。
在上圖中,計(jì)數(shù)器采用增1計(jì)數(shù)。計(jì)數(shù)器從初值0開始計(jì)數(shù),每經(jīng)過一個(gè)計(jì)數(shù)時(shí)鐘周期,計(jì)數(shù)器的值就加1,若計(jì)數(shù)器的值達(dá)到終值4,則在下一個(gè)時(shí)鐘到來時(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í)原理對于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ā)出中斷請求信號,使CPU暫停當(dāng)前的工作,而轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,在中斷服務(wù)程序中實(shí)現(xiàn)具體的定時(shí)功能(如改變小燈的狀態(tài)等)。任務(wù)2.2理解中斷的通用知識2.2.1中斷的基本概念1、中斷的含義
中斷,是指MCU在正常運(yùn)行程序時(shí),由于MCU內(nèi)核異常(內(nèi)核中斷)或
MCU各功能模塊發(fā)出請求事件(非內(nèi)核中斷),使MCU停止正在運(yùn)行的程序,而轉(zhuǎn)去處理異常(使芯片復(fù)位或使MCU做出其他處理)或
執(zhí)行處理內(nèi)核外部事件的程序(中斷服務(wù)程序)。任務(wù)2.2理解中斷的通用知識2.2.1中斷的基本概念2、中斷源、中斷向量表
引起MCU中斷的事件稱為中斷源。MCU的中斷源分為兩類:內(nèi)核中斷源和非內(nèi)核中斷源。
STM32F103C8T6的中斷源見表2-1。
中斷向量號是每個(gè)中斷源的固定編號。中斷向量表是指按照中斷源的中斷向量號的固定順序,用于存放中斷服務(wù)程序入口地址(中斷向量)的一段連續(xù)存儲區(qū)域。
IRQ中斷號是每個(gè)中斷源的另一個(gè)編號,每一個(gè)編號代表一個(gè)中斷源。在芯片頭文件stm32f10x.h中,使用一個(gè)枚舉類型實(shí)現(xiàn)了IRQ中斷號的編排。任務(wù)2.2理解中斷的通用知識2.2.1中斷的基本概念
在進(jìn)行MCU設(shè)計(jì)時(shí),一般都定義了中斷源的優(yōu)先級。MCU在程序執(zhí)行過程中,若有兩個(gè)以上的中斷同時(shí)發(fā)生,則優(yōu)先級最高的中斷源最先得到響應(yīng)。
3、中斷優(yōu)先級、可屏蔽中斷和不可屏蔽中斷
可屏蔽中斷,是指可通過編程方式關(guān)閉的中斷。不可屏蔽中斷,是指不能通過編程方式關(guān)閉的中斷。任務(wù)2.2理解中斷的通用知識2.2.2中斷的基本過程1、中斷請求
當(dāng)某一中斷源需要CPU為其服務(wù)時(shí),它會將對應(yīng)中斷源的中斷標(biāo)志位置1,以便向CPU發(fā)出中斷請求信號。2、中斷檢測、中斷響應(yīng)和中斷處理
當(dāng)CPU檢測到有中斷請求并響應(yīng)中斷請求時(shí),首先保護(hù)現(xiàn)場(將CPU內(nèi)部寄存器的數(shù)據(jù)依次壓入RAM堆棧中);然后從目前等待的中斷源中取出優(yōu)先級最高中斷源的中斷向量,執(zhí)行相應(yīng)的中斷服務(wù)程序;最后恢復(fù)現(xiàn)場(從RAM堆棧依次彈出CPU內(nèi)部寄存器的數(shù)據(jù))、中斷返回(返回到中斷前的程序)。說明:上述過程是由系統(tǒng)自動完成的,用戶只需專注于主程序和中斷服務(wù)程序的設(shè)計(jì)。
【理解概念、觸類旁通】
舉出日常生活中利用中斷思想處理事情的例子。任務(wù)2.2理解中斷的通用知識2.2.3
CM3的非內(nèi)核模塊中斷管理機(jī)制1、CM3的中斷結(jié)構(gòu)及中斷過程
CM3的中斷結(jié)構(gòu)由模塊中斷源、嵌套向量中斷控制器(NestedVectoredInterruptController,NVIC)和
CM3內(nèi)核組成。
中斷過程分兩步:首先,模塊中斷源向NVIC發(fā)出中斷請求信號;然后,NVIC對發(fā)來的中斷信號進(jìn)行管理,判斷該中斷是否使能,若使能,則通過私有外設(shè)總線發(fā)送給CM3內(nèi)核,由內(nèi)核進(jìn)行中斷處理。任務(wù)2.2理解中斷的通用知識2.2.3
CM3的非內(nèi)核模塊中斷管理機(jī)制2、非內(nèi)核中斷使能(或禁止)配置步驟
若要使能一個(gè)非內(nèi)核中斷,則需要對其進(jìn)行使能配置:
①將模塊中斷使能位置1,使模塊能夠發(fā)出中斷請求信號;
②調(diào)用內(nèi)核頭文件core_cm3.h中的NVIC_EnableIRQ函數(shù),允許模塊的中斷請求。
若要禁止一個(gè)非內(nèi)核中斷,則首先將模塊中斷使能位清零,禁止該模塊發(fā)出中斷請求信號;然后調(diào)用內(nèi)核頭文件core_cm3.h中的NVIC_DisableIRQ函數(shù),禁止模塊的中斷請求。任務(wù)2.3利用Timer定時(shí)中斷實(shí)現(xiàn)頻閃燈2.3.1MCU的Timer基本定時(shí)底層驅(qū)動構(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開始遞增計(jì)數(shù)。
(2)向下計(jì)數(shù):從模值(計(jì)數(shù)初值)遞減計(jì)數(shù)到0,生成下溢事件,然后重新從模值開始遞減計(jì)數(shù)。
(3)向上/向下雙向計(jì)數(shù):從0遞增計(jì)數(shù)到模值-1,生成上溢事件;然后從模值遞減計(jì)數(shù)到1,生成下溢事件。之后,計(jì)數(shù)器從0開始重新計(jì)數(shù)。
【學(xué)以致用】結(jié)合圖2-1,分別畫出定時(shí)器在計(jì)數(shù)初值為5時(shí)對應(yīng)的向下計(jì)數(shù)模式示意圖
和
定時(shí)器在計(jì)數(shù)初值為0、模值為5時(shí)對應(yīng)的向上/向下雙向計(jì)數(shù)模式示意圖。任務(wù)2.3利用Timer定時(shí)中斷實(shí)現(xiàn)頻閃燈2.3.1MCU的Timer基本定時(shí)底層驅(qū)動構(gòu)件的使用方法1、MCU的Timer的數(shù)量和功能特性
利用定時(shí)器實(shí)現(xiàn)基本定時(shí)功能時(shí),一般采用向上或向下計(jì)數(shù)模式。對于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ū)動構(gòu)件的使用方法2、MCU的Timer基本定時(shí)底層驅(qū)動構(gòu)件的組成及使用方法
Timer基本定時(shí)底層驅(qū)動構(gòu)件由timer.h頭文件和timer.c源文件組成,若要使用Timer基本定時(shí)底層驅(qū)動構(gòu)件,只需將這兩個(gè)文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實(shí)現(xiàn)對Timer的操作。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx
其中,timer.h頭文件主要包括相關(guān)頭文件的包含、一些必要的宏定義、對外接口函數(shù)的聲明,而timer.c源文件則是對外接口函數(shù)的具體實(shí)現(xiàn),初學(xué)者不必深究。
用戶只要熟悉timer.h頭文件的內(nèi)容,即可使用Timer基本定時(shí)底層驅(qū)動構(gòu)件進(jìn)行編程。任務(wù)2.3利用Timer定時(shí)中斷實(shí)現(xiàn)頻閃燈2.3.1MCU的Timer基本定時(shí)底層驅(qū)動構(gòu)件的使用方法2、MCU的Timer基本定時(shí)底層驅(qū)動構(gòu)件的組成及使用方法【學(xué)以致用】
根據(jù)timer.h頭文件,寫出實(shí)現(xiàn)下列功能的函數(shù)調(diào)用語句。
(1)對定時(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ū)動構(gòu)件的使用方法
ARMCortex-M內(nèi)核中包含了一個(gè)簡單的定時(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級)的合理范圍為1~262ms。任務(wù)2.4利用內(nèi)核定時(shí)器(SysTickTimer)中斷實(shí)現(xiàn)頻閃燈2.4.1SysTick的功能特性及其底層驅(qū)動構(gòu)件的使用方法2、SysTick定時(shí)器底層驅(qū)動構(gòu)件的組成及使用方法
SysTick定時(shí)器底層驅(qū)動構(gòu)件由systick.h頭文件和systick.c源文件組成,若要使用SysTick定時(shí)器底層驅(qū)動構(gòu)件,只需將這兩個(gè)文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實(shí)現(xiàn)對SysTick定時(shí)器的操作。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx
其中,systick.h頭文件主要包括相關(guān)頭文件的包含、對外接口函數(shù)的聲明,而systick.c源文件則是對外接口函數(shù)的具體實(shí)現(xiàn),初學(xué)者不必深究。
用戶只要熟悉systick.h頭文件的內(nèi)容,即可使用SysTick定時(shí)器底層驅(qū)動構(gòu)件進(jìn)行編程?!緦W(xué)以致用】
根據(jù)systick.h頭文件,寫出對SysTick定時(shí)器進(jìn)行初始化,定時(shí)時(shí)間為100ms的函數(shù)調(diào)用語句。任務(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:
對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ì)思想,即對嵌入式硬件和嵌入式軟件進(jìn)行封裝,供系統(tǒng)設(shè)計(jì)者調(diào)用,并倡導(dǎo)嵌入式軟件分層設(shè)計(jì)的理念,以大幅度降低嵌入式技術(shù)學(xué)習(xí)難度和開發(fā)難度。
本書特色:項(xiàng)目任務(wù)驅(qū)動,突出學(xué)以致用,注重實(shí)踐創(chuàng)新。每個(gè)項(xiàng)目且均采用了“通用知識”→“嵌入式構(gòu)件設(shè)計(jì)”→“應(yīng)用層程序設(shè)計(jì)”→“學(xué)以致用與創(chuàng)新”的學(xué)習(xí)流程。采用“搭積木”的思想,逐步提高嵌入式系統(tǒng)設(shè)計(jì)能力。
本書可作為高等學(xué)校電子信息類、計(jì)算機(jī)類、自動化類等專業(yè)的嵌入式系統(tǒng)設(shè)計(jì)教材,也可作為嵌入式技術(shù)培訓(xùn)教材,還可供從事嵌入式技術(shù)開發(fā)的工程技術(shù)人員參考。項(xiàng)目1:GPIO基礎(chǔ)應(yīng)用—實(shí)現(xiàn)閃燈和開關(guān)狀態(tài)檢測與控制功能項(xiàng)目2:利用定時(shí)中斷實(shí)現(xiàn)頻閃燈項(xiàng)目3:GPIO和定時(shí)器的綜合應(yīng)用—實(shí)現(xiàn)數(shù)碼管顯示、鍵盤測控、測溫功能項(xiàng)目4:利用
UART
實(shí)現(xiàn)上位機(jī)和下位機(jī)的通信項(xiàng)目5:利用
Timer
實(shí)現(xiàn)PWM和輸入捕獲功能項(xiàng)目6:利用
ADC
設(shè)計(jì)簡易數(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ù)碼管顯示、鍵盤檢測與控制、測溫功能【項(xiàng)目導(dǎo)讀】
數(shù)碼管和鍵盤分別是嵌入式智能產(chǎn)品中常用的輸出設(shè)備和輸入設(shè)備。有些實(shí)際工程應(yīng)用中需要對溫度進(jìn)行檢測,實(shí)現(xiàn)某種控制功能。本項(xiàng)目是在項(xiàng)目1和項(xiàng)目2的基礎(chǔ)上,綜合利用GPIO和定時(shí)器實(shí)現(xiàn)數(shù)碼管顯示、鍵盤檢測與控制、測溫功能?!緦W(xué)習(xí)目標(biāo)】(1)掌握數(shù)碼管的通用知識,包括數(shù)碼管的結(jié)構(gòu)、基于MCU直接控制的數(shù)碼管硬件構(gòu)件設(shè)計(jì)方法、數(shù)碼管的筆形碼、基于MCU直接控制的數(shù)碼管顯示原理。(2)掌握鍵盤的通用知識,包括鍵盤的基本問題和兩種接口方式。(3)熟悉帶鍵盤掃描接口的數(shù)碼管驅(qū)動控制專用芯片TM1637的功能特點(diǎn),掌握基于TM1637的數(shù)碼管和鍵盤硬件構(gòu)件設(shè)計(jì)方法和軟件構(gòu)件設(shè)計(jì)方法。(4)掌握基于TM1637的數(shù)碼管顯示和鍵盤檢測與控制的應(yīng)用層程序設(shè)計(jì)方法。(5)熟悉1線數(shù)字式測溫器件DS18B20的主要特點(diǎn),掌握基于DS18B20的測溫硬件構(gòu)件設(shè)計(jì)方法和軟件構(gòu)件設(shè)計(jì)方法。(6)掌握基于DS18B20的測溫功能應(yīng)用層程序設(shè)計(jì)方法。項(xiàng)目3GPIO和定時(shí)器的綜合應(yīng)用——實(shí)現(xiàn)數(shù)碼管顯示、鍵盤檢測與控制、測溫功能任務(wù)3.1掌握數(shù)碼管的通用知識3.1.1數(shù)碼管的結(jié)構(gòu)任務(wù)3.1掌握數(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ù)碼管的通用知識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ù)碼管的通用知識3.1.3數(shù)碼管的筆形碼共陽極數(shù)碼管的筆形碼(不帶小數(shù)點(diǎn))
若需要編制帶小數(shù)點(diǎn)的筆形碼,只需將此表中的h段改為“0”即可。
若使共陽極數(shù)碼管的某段點(diǎn)亮,則該段對應(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ù)組存放筆形碼
若使共陽極數(shù)碼管的某段不點(diǎn)亮,則該段對應(yīng)的數(shù)據(jù)線應(yīng)為高電平(邏輯1)。任務(wù)3.1掌握數(shù)碼管的通用知識3.1.3數(shù)碼管的筆形碼【學(xué)以致用】
填寫表3-3中共陰極數(shù)碼管帶小數(shù)點(diǎn)的“0.”
~
“9.”對應(yīng)的筆形碼。任務(wù)3.1掌握數(shù)碼管的通用知識3.1.4基于MCU直接控制的數(shù)碼管顯示原理1、使某位數(shù)碼管顯示數(shù)據(jù)
例如,若要使第1位數(shù)碼管顯示數(shù)據(jù)“0”,則:
首先需要將位選線LED_CS1置為低電平,而其他位選線置為高電平;
然后將數(shù)碼管數(shù)據(jù)
“0”對應(yīng)的筆形碼0xC0(11000000)送至數(shù)碼管的8根數(shù)據(jù)線即可。011100000011任務(wù)3.1掌握數(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ù)碼管的通用知識3.1.4基于MCU直接控制的數(shù)碼管顯示原理3、使多位數(shù)碼管“同時(shí)”顯示數(shù)據(jù)
若將延時(shí)時(shí)間縮短至5ms,則給人感覺4位數(shù)碼管
“同時(shí)”顯示“1”
“2”
“3”
“4”(視覺暫留)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í)
——動態(tài)掃描顯示5ms5ms5ms5ms【知識鞏固】
簡述數(shù)碼管動態(tài)掃描顯示的原理和實(shí)現(xiàn)方法。任務(wù)3.2掌握鍵盤的通用知識3.2.1鍵盤的基本問題1、鍵盤操作、抖動問題4引腳直插式鍵盤按鍵實(shí)物圖及內(nèi)部結(jié)構(gòu)圖2引腳貼片式鍵盤按鍵實(shí)物圖在嵌入式系統(tǒng)中,有兩種常用的鍵盤按鍵。任務(wù)3.2掌握鍵盤的通用知識3.2.1鍵盤的基本問題1、鍵盤操作、抖動問題VCC按下抖動釋放抖動穩(wěn)定閉合5~10ms5~10ms理想實(shí)際
操作者幾乎感覺不到抖動,但MCU以為操作者在此期間連續(xù)操作若干次鍵,從而引起按鍵命令的錯(cuò)誤執(zhí)行或重復(fù)執(zhí)行,因此需要對按鍵抖動進(jìn)行處理。(1)濾波去抖:實(shí)現(xiàn)鍵操作時(shí)電壓的變化為理想的矩形波。(2)延時(shí)躲抖:MCU檢測到有鍵被按下時(shí),先軟件延時(shí)10ms以避開按鍵抖動(惹不起但可以躲得起),然后再判斷該鍵是否被按下。例如:電容濾波去抖。0.1uF任務(wù)3.2掌握鍵盤的通用知識3.2.1鍵盤的基本問題2、鍵盤連擊問題
當(dāng)按下某個(gè)鍵時(shí),如果操作者還沒有釋放該鍵,則MCU以為操作者在連續(xù)操作該鍵(連擊),對應(yīng)的按鍵功能程序?qū)磸?fù)被執(zhí)行。大多數(shù)應(yīng)用場合需要防止連擊,即一次按鍵只讓MCU執(zhí)行一次功能程序,該鍵不釋放就不執(zhí)行第二次。
在軟件設(shè)計(jì)時(shí),可這樣做:當(dāng)MCU檢測到某個(gè)鍵被按下時(shí),只執(zhí)行一次功能程序,然后等待按鍵釋放。任務(wù)3.2掌握鍵盤的通用知識3.2.2鍵盤的兩種接口方式(基于MCU引腳直接連接)1、獨(dú)立式鍵盤
各個(gè)鍵相互獨(dú)立,按照一對一的方式連接到MCU的GPIO引腳或外部中斷引腳上,另一端接地。
采用查詢掃描時(shí),MCU可通過直接讀取KEY引腳的電平狀態(tài)來判斷鍵是否被按下。
采用外部中斷掃描時(shí),一般利用按鍵的下降沿觸發(fā)MCU中斷。
查鍵方便,但占用MCU的I/O引腳資源較多,因此一般適用于鍵較少的場合。
任務(wù)3.2掌握鍵盤的通用知識3.2.2鍵盤的兩種接口方式(基于MCU引腳直接連接)2、矩陣式鍵盤
4×4=16個(gè)鍵,只需要MCU的8個(gè)GPIO引腳,應(yīng)用于鍵較多的場合。
結(jié)構(gòu)原理:
R1~R4引腳作為行線,C1~C4引腳作為列線,在每個(gè)行線和列線的交叉點(diǎn)放置一個(gè)鍵,當(dāng)某個(gè)鍵被按下時(shí),其對應(yīng)的行線和列線短路,MCU通過檢測是否有行線和列線短路來確定是否有鍵被按下,并確定被按下鍵的位置。行線列線任務(wù)3.2掌握鍵盤的通用知識【知識鞏固】(1)按鍵抖動處理方法有哪些?它們的優(yōu)點(diǎn)和缺點(diǎn)分別是什么?(2)什么是鍵盤連擊?如何防止鍵盤連擊現(xiàn)象?按鍵連擊可以用于什么場合?(3)鍵盤有幾種接口方式?分別對應(yīng)的適用場合是什么?任務(wù)3.3基于TM1637的數(shù)碼管和鍵盤構(gòu)件設(shè)計(jì)
前面學(xué)習(xí)的數(shù)碼管硬件構(gòu)件和鍵盤硬件構(gòu)件,均采用MCU的GPIO引腳直接連接方式,其優(yōu)點(diǎn)是原理簡單。但在同時(shí)需要使用數(shù)碼管和鍵盤的應(yīng)用系統(tǒng)設(shè)計(jì)中,若使用上述硬件構(gòu)件,則明顯存在占用過多GPIO引腳資源的缺點(diǎn)。
為了解決這一問題,可改用專門的數(shù)碼管和鍵盤驅(qū)動芯片(如TM1637芯片)來簡化硬件電路。
任務(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ū)動控制專用芯片??芍С肿疃?/p>
6位
8段共陽極數(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ū)動數(shù)碼管和鍵盤,與基于MCU的GPIO引腳直接驅(qū)動數(shù)碼管和鍵盤,有什么好處?兩種驅(qū)動方式有何區(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通過TM1637控制數(shù)碼管顯示功能和鍵盤掃描功能。
其中,tm1637_led_kb.h頭文件主要包括頭文件的包含、必要的宏定義、存放數(shù)碼管筆形碼的數(shù)組、存放鍵盤編碼和對應(yīng)鍵名的數(shù)組以及對外接口函數(shù)的聲明,而tm1637_led_kb.c源文件是該軟件構(gòu)件對外接口函數(shù)的具體實(shí)現(xià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)用語句。
(1)對TM1637進(jìn)行初始化。
(2)TM1637驅(qū)動數(shù)碼管動態(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ù)碼管的高位滅零功能:對于數(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ù)組中對應(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)顯示相對時(shí)鐘的效果。3)中斷服務(wù)程序源文件isr.c:聲明全局?jǐn)?shù)組;
在定時(shí)中斷服務(wù)程序中,實(shí)現(xiàn)定時(shí)功能(更新全局?jǐn)?shù)組的數(shù)據(jù))任務(wù)3.5基于TM1637的鍵盤檢測與控制的應(yīng)用層程序設(shè)計(jì)3.5.1鍵盤檢測與控制的查詢程序流程任務(wù)3.5基于TM1637的鍵盤檢測與控制的應(yīng)用層程序設(shè)計(jì)3.5.2應(yīng)用實(shí)例參考程序
在嵌入式軟件最小系統(tǒng)框架下,設(shè)計(jì)07_Source(應(yīng)用層軟件構(gòu)件)的文件,以實(shí)現(xiàn)對某個(gè)鍵(如1號鍵)的按鍵次數(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)證】
將等待按鍵釋放對應(yīng)的語句去掉,重新運(yùn)行程序,觀察實(shí)驗(yàn)現(xiàn)象,體會語句的作用。任務(wù)3.6基于DS18B20的測溫功能設(shè)計(jì)與實(shí)現(xiàn)3.6.1DS18B20的主要特點(diǎn)和基于DS18B20的測溫硬件構(gòu)件設(shè)計(jì)1、DS18B20的功能特點(diǎn)
DS18B20是
1線數(shù)字式
測溫器件。其特點(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)測溫。
(3)測量溫度范圍為-55℃~+125℃,其中在-10℃至+85℃精確度為±0.5℃。其最高分辨率(默認(rèn)設(shè)置)為12位(二進(jìn)制),對應(yīng)0.0625℃的溫度分辨率。任務(wù)3.6基于DS18B20的測溫功能設(shè)計(jì)與實(shí)現(xiàn)3.6.1DS18B20的主要特點(diǎn)和基于DS18B20的測溫硬件構(gòu)件設(shè)計(jì)2、基于DS18B20的測溫硬件構(gòu)件設(shè)計(jì)圖任務(wù)3.6基于DS18B20的測溫功能設(shè)計(jì)與實(shí)現(xiàn)3.6.2基于DS18B20的測溫軟件構(gòu)件的組成及使用方法
基于DS18B20的測溫軟件構(gòu)件由ds18b20.h頭文件和ds18b20.c源文件組成,若使用該軟件構(gòu)件,則只需將這兩個(gè)文件添加到所建工程的05_App(應(yīng)用外設(shè)軟件構(gòu)件)文件夾中,即可實(shí)現(xiàn)MCU通過1個(gè)GPIO引腳獲取所測溫度的功能。
其中,ds18b20.h頭文件主要包括頭文件的包含、必要的宏定義以及對外接口函數(shù)的聲明,而ds18b20.c源文件是該軟件構(gòu)件對外接口函數(shù)的具體實(shí)現(xiàn)。見工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx用戶只要熟悉ds18b20.h
頭文件的內(nèi)容,即可使用該軟件構(gòu)件進(jìn)行編程。任務(wù)3.6基于DS18B20的測溫功能設(shè)計(jì)與實(shí)現(xiàn)3.6.3基于DS18B20的測溫功能應(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)換并通過數(shù)碼管顯示溫度的功能。1)工程總頭文件includes
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保理質(zhì)押合同范例
- 產(chǎn)品庫存寄售合同范本
- 2025-2030年中國鋁桌項(xiàng)目投資可行性研究分析報(bào)告
- 買賣房子訂金合同范本
- 2024-2030年中國碳酸氫鈉注射液行業(yè)市場深度研究及發(fā)展趨勢預(yù)測報(bào)告
- 2020-2025年中國游泳池?zé)岜眯袠I(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨報(bào)告
- 自動開收三折傘行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報(bào)告
- 精準(zhǔn)賽車冠軍一期計(jì)劃
- 個(gè)人餐飲店勞動合同范本
- 4s店車貸合同范本
- 《高級計(jì)量經(jīng)濟(jì)學(xué)》-上課講義課件
- 中國文化概論(第三版)全套課件
- 門窗安裝技術(shù)標(biāo)投標(biāo)書
- 新版手機(jī)開發(fā)項(xiàng)目流程圖
- 折彩粽的手工制作ppt公開課
- 發(fā)證機(jī)關(guān)所在地區(qū)代碼表
- 建筑垃圾回收利用統(tǒng)計(jì)臺賬
- 《不一樣的你我他》(完美)課件
- 外研版一起點(diǎn)二年級下冊英語全冊課件
- XE82000--午山風(fēng)電場風(fēng)機(jī)定檢作業(yè)指導(dǎo)書
- 前列腺癌臨床路徑(最全版)
評論
0/150
提交評論