版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
嵌入式系統(tǒng)設(shè)計
為了實現(xiàn)嵌入式系統(tǒng)設(shè)計的可移植和可復(fù)用,嵌入式硬件和嵌入式軟件均采用構(gòu)件化的設(shè)計思想,即對嵌入式硬件和嵌入式軟件進(jìn)行封裝,供系統(tǒng)設(shè)計者調(diào)用,并倡導(dǎo)嵌入式軟件分層設(shè)計的理念,以大幅度降低嵌入式技術(shù)學(xué)習(xí)難度和開發(fā)難度。
本書特色:項目任務(wù)驅(qū)動,突出學(xué)以致用,注重實踐創(chuàng)新。每個項目且均采用了“通用知識”→“嵌入式構(gòu)件設(shè)計”→“應(yīng)用層程序設(shè)計”→“學(xué)以致用與創(chuàng)新”的學(xué)習(xí)流程。采用“搭積木”的思想,逐步提高嵌入式系統(tǒng)設(shè)計能力。
本書可作為高等學(xué)校電子信息類、計算機類、自動化類等專業(yè)的嵌入式系統(tǒng)設(shè)計教材,也可作為嵌入式技術(shù)培訓(xùn)教材,還可供從事嵌入式技術(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)軟件延時功能?!卷椖繉?dǎo)讀】
該方式有兩大缺點:
①軟件延時一般用于粗略延時的場合;
②執(zhí)行延時子程序期間,CPU一直被占用而不能做其他事情,從而降低了CPU的利用率。項目2:利用定時中斷實現(xiàn)頻閃燈
為此,可使用MCU內(nèi)部可編程的定時/計數(shù)器實現(xiàn)延時。用戶根據(jù)需要設(shè)置定時時間,并啟動定時/計數(shù)器計數(shù),當(dāng)定時時間到時,它將自動產(chǎn)生一個定時輸出信號(通常是中斷請求信號)告知CPU,使CPU轉(zhuǎn)去執(zhí)行定時中斷服務(wù)程序,從而實現(xiàn)某些定時功能。定時/計數(shù)器在計數(shù)期間,與CPU并行工作,不占用CPU的工作時間。該方式通過簡單的程序設(shè)置即可實現(xiàn)準(zhǔn)確的定時?!卷椖繉?dǎo)讀】
【學(xué)習(xí)目標(biāo)】(1)理解定時器的定時原理。(2)理解中斷的通用知識,包括中斷的基本概念、基本過程及管理機制。(3)熟悉MCU內(nèi)部定時器的功能特性,掌握MCU內(nèi)部定時器底層驅(qū)動構(gòu)件的使用方法。(4)學(xué)會利用MCU內(nèi)部定時中斷功能實現(xiàn)頻閃燈或流水燈的應(yīng)用層程序設(shè)計方法。*(5)熟悉MCU內(nèi)部定時器底層驅(qū)動構(gòu)件源文件的設(shè)計方法。項目2:利用定時中斷實現(xiàn)頻閃燈任務(wù)2.1理解定時器的定時原理定時器本質(zhì)上是一個對計數(shù)時鐘進(jìn)行周期統(tǒng)計的計數(shù)器。
在上圖中,計數(shù)器采用增1計數(shù)。計數(shù)器從初值0開始計數(shù),每經(jīng)過一個計數(shù)時鐘周期,計數(shù)器的值就加1,若計數(shù)器的值達(dá)到終值4,則在下一個時鐘到來時,計數(shù)器溢出,計數(shù)器的值恢復(fù)至初值0,然后進(jìn)行下一輪的加1計數(shù),如此重復(fù)。
定時器每一輪的定時時間t=
計數(shù)次數(shù)×計數(shù)時鐘周期
在上圖中,一輪的計數(shù)次數(shù)是5,若計數(shù)時鐘頻率為1kHz(計數(shù)時鐘周期為1ms),則一輪的定時時間為5ms。任務(wù)2.1理解定時器的定時原理對于n位(二進(jìn)制)定時/計數(shù)器,計數(shù)器的終值最大值為2n-1,結(jié)合上圖,定時/計數(shù)器一輪計數(shù)次數(shù)最大值為2n。n位定時/計數(shù)器一輪的最大定時時間t:
t=2n×計數(shù)時鐘周期
=2n/計數(shù)時鐘頻率
f若
f=
時鐘源頻率/分頻系數(shù),則
t=2n/(時鐘源頻率/分頻系數(shù))
【學(xué)以致用】
若定時器為16位,其時鐘源頻率為f,分頻系數(shù)為p,則一輪定時時間的范圍是多少?任務(wù)2.1理解定時器的定時原理
當(dāng)計數(shù)器溢出時,定時器可向CPU發(fā)出中斷請求信號,使CPU暫停當(dāng)前的工作,而轉(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)去處理異常(使芯片復(fù)位或使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中斷的基本概念
在進(jìn)行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、中斷請求
當(dāng)某一中斷源需要CPU為其服務(wù)時,它會將對應(yīng)中斷源的中斷標(biāo)志位置1,以便向CPU發(fā)出中斷請求信號。2、中斷檢測、中斷響應(yīng)和中斷處理
當(dāng)CPU檢測到有中斷請求并響應(yīng)中斷請求時,首先保護現(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è)計。
【理解概念、觸類旁通】
舉出日常生活中利用中斷思想處理事情的例子。任務(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ā)來的中斷信號進(jìn)行管理,判斷該中斷是否使能,若使能,則通過私有外設(shè)總線發(fā)送給CM3內(nèi)核,由內(nèi)核進(jìn)行中斷處理。任務(wù)2.2理解中斷的通用知識2.2.3
CM3的非內(nèi)核模塊中斷管理機制2、非內(nèi)核中斷使能(或禁止)配置步驟
若要使能一個非內(nèi)核中斷,則需要對其進(jìn)行使能配置:
①將模塊中斷使能位置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ù)。
【學(xué)以致用】結(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),初學(xué)者不必深究。
用戶只要熟悉timer.h頭文件的內(nèi)容,即可使用Timer基本定時底層驅(qū)動構(gòu)件進(jìn)行編程。任務(wù)2.3利用Timer定時中斷實現(xiàn)頻閃燈2.3.1MCU的Timer基本定時底層驅(qū)動構(gòu)件的使用方法2、MCU的Timer基本定時底層驅(qū)動構(gòu)件的組成及使用方法【學(xué)以致用】
根據(jù)timer.h頭文件,寫出實現(xiàn)下列功能的函數(shù)調(diào)用語句。
(1)對定時器TIMER1進(jìn)行基本定時功能初始化,定時時間10ms。
(2)使能定時器TIMER1的更新中斷。
(3)獲取定時器TIMER1的更新標(biāo)志。
(4)清除定時器TIMER1的更新標(biāo)志。任務(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ù)全局變量的值,控制外設(shè)在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【學(xué)以致用與創(chuàng)新】
(1)改變小燈閃爍的頻率,控制其他小燈閃爍。
(2)實現(xiàn)流水燈(如多個小燈輪流點亮)的效果。
(3)使用其他定時器獲得相同的效果。3)中斷服務(wù)程序源文件isr.c:聲明全局變量;實現(xiàn)定時功能(更新全局變量的值)【程序改進(jìn),提高系統(tǒng)的實時性和可靠性】任務(wù)2.4利用內(nèi)核定時器(SysTickTimer)中斷實現(xiàn)頻閃燈2.4.1SysTick的功能特性及其底層驅(qū)動構(gòu)件的使用方法
ARMCortex-M內(nèi)核中包含了一個簡單的定時器SysTickTimer,又稱為“滴答”定時器。SysTick定時器被捆綁在NVIC中,有效位數(shù)是24位(計數(shù)次數(shù)最大值為224),采用減1計數(shù)的工作方式,當(dāng)減1計數(shù)到0時,可產(chǎn)生SysTick異常(中斷)。1、SysTick定時器的功能特性
SysTick定時器的計數(shù)時鐘頻率有兩種選擇:AHB總線時鐘頻率(內(nèi)核時鐘頻率);AHB總線時鐘頻率/8。
SysTick定時器的定時時間t=計數(shù)次數(shù)(滴答數(shù))/
計數(shù)時鐘頻率
=(1~224)/
計數(shù)時鐘頻率
若使用AHB總線時鐘頻率64MHz,則定時時間(ms級)的合理范圍為1~262ms。任務(wù)2.4利用內(nèi)核定時器(SysTickTimer)中斷實現(xiàn)頻閃燈2.4.1SysTick的功能特性及其底層驅(qū)動構(gòu)件的使用方法2、SysTick定時器底層驅(qū)動構(gòu)件的組成及使用方法
SysTick定時器底層驅(qū)動構(gòu)件由systick.h頭文件和systick.c源文件組成,若要使用SysTick定時器底層驅(qū)動構(gòu)件,只需將這兩個文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實現(xiàn)對S
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年鋼材生產(chǎn)許可證合同規(guī)范文本3篇
- 2025年粵教版必修1生物上冊階段測試試卷含答案
- 二零二五年度航空航天材料樣本試驗合同3篇
- 二零二五版四合院房產(chǎn)出售與生態(tài)旅游開發(fā)合同3篇
- 2024版外墻保溫勞務(wù)合同
- 2025年粵教版七年級化學(xué)上冊階段測試試卷含答案
- 2025年度網(wǎng)絡(luò)營銷推廣技術(shù)服務(wù)合同4篇
- 獨特2024年度版權(quán)許可使用合同
- 2025年上教版必修1物理上冊月考試卷含答案
- 校園軟件施工方案
- 矩形磚砌渠道施工方案
- 大數(shù)據(jù)與人工智能ppt
- 中醫(yī)科特色診療規(guī)范
- 建筑工程一切險條款版
- PEP小學(xué)六年級英語上冊選詞填空專題訓(xùn)練
- 古建筑修繕項目施工規(guī)程(試行)
- GA 844-2018防砸透明材料
- 化學(xué)元素周期表記憶與讀音 元素周期表口訣順口溜
- 非人力資源經(jīng)理的人力資源管理培訓(xùn)(新版)課件
- 鉬氧化物還原過程中的物相轉(zhuǎn)變規(guī)律及其動力學(xué)機理研究
- (完整word)2019注冊消防工程師繼續(xù)教育三科試習(xí)題及答案
評論
0/150
提交評論