




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)原理及應(yīng)用第1章嵌入式系統(tǒng)概述1嵌入式系統(tǒng)基本概念2嵌入式系統(tǒng)硬件3嵌入式系統(tǒng)軟件4本章總結(jié)5課后作業(yè)嵌入式系統(tǒng)定義和特點(diǎn)嵌入式系統(tǒng)發(fā)展嵌入式系統(tǒng)應(yīng)用嵌入式系統(tǒng)架構(gòu)本節(jié)小結(jié)1.1嵌入式系統(tǒng)基本概念1.定義1.1.1嵌入式系統(tǒng)定義和特點(diǎn)IEE(國際電機(jī)工程師協(xié)會(huì))定義:“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”(devicesusedtocontro1,monitor,orassisttheoperationofequipment,machineryorplants)國內(nèi)定義:以計(jì)算機(jī)技術(shù)為基礎(chǔ),以應(yīng)用為中心,軟件硬件可剪裁,適合應(yīng)用系統(tǒng)對(duì)功能可靠性、成本、體積、功耗嚴(yán)格要求的專業(yè)計(jì)算機(jī)系統(tǒng)。2.特點(diǎn)1.1.1嵌入式系統(tǒng)定義和特點(diǎn)(1)技術(shù)密集:嵌入式系統(tǒng)是以先進(jìn)的計(jì)算機(jī)技術(shù)為基礎(chǔ),結(jié)合半導(dǎo)體技術(shù)和電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物,是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。(2)以應(yīng)用為中心:嵌入式系統(tǒng)是針對(duì)各行業(yè)的具體應(yīng)用而開發(fā)的專用系統(tǒng),不具備通用性,升級(jí)換代也和具體產(chǎn)品同步進(jìn)行,具有較長(zhǎng)的生命周期。(3)軟硬件可剪裁:嵌入式系統(tǒng)的軟件和硬件都必須高效率地設(shè)計(jì),結(jié)合具體應(yīng)用,量體裁衣,去除冗余,力爭(zhēng)在相同的硅片面積上實(shí)現(xiàn)更高的性能。(4)高可靠高實(shí)時(shí)性:嵌入式系統(tǒng)一般嵌入到具體設(shè)備中,對(duì)可靠性、成本、體積、功耗、電磁兼容等有嚴(yán)格要求,嵌入式軟件存儲(chǔ)在微控制器中,要求具有高可靠性和高實(shí)時(shí)性。1.嵌入式系統(tǒng)發(fā)展歷史1.1.2嵌入式系統(tǒng)發(fā)展嵌入式系統(tǒng)從無操作系統(tǒng)、簡(jiǎn)單操作系統(tǒng)、實(shí)時(shí)操作系統(tǒng),發(fā)展到面向Internet階段。(1)無操作系統(tǒng):使用8位的CPU芯片來執(zhí)行一些單線程的程序,系統(tǒng)結(jié)構(gòu)和功能相對(duì)單一,處理效率較低,存儲(chǔ)容量較小,幾乎沒有用戶接口。使用簡(jiǎn)便、價(jià)格低廉,曾經(jīng)在工業(yè)控制領(lǐng)域中得到了非常廣泛的應(yīng)用,但卻無法滿足現(xiàn)今對(duì)執(zhí)行效率、存儲(chǔ)容量等要求較高的智能控制、信息家電等場(chǎng)合的需要。(2)簡(jiǎn)單操作系統(tǒng):20世紀(jì)80年代,隨著微電子工藝水平的提高,IC制造商開始把嵌入式應(yīng)用中所需要的微處理器、I/O接口、串行接口以及RAM、ROM等部件統(tǒng)統(tǒng)集成到一片VLSI中,制造出面向I/0設(shè)計(jì)的微控制器,并一舉成為嵌入式系統(tǒng)領(lǐng)域中異軍突起的新秀。與此同時(shí),嵌入式系統(tǒng)的程序員也開始基于一些簡(jiǎn)單的操作系統(tǒng)開發(fā)嵌入式應(yīng)用軟件,大大縮短了開發(fā)周期、提高了開發(fā)效率。1.嵌入式系統(tǒng)發(fā)展歷史1.1.2嵌入式系統(tǒng)發(fā)展嵌入式系統(tǒng)從無操作系統(tǒng)、簡(jiǎn)單操作系統(tǒng)、實(shí)時(shí)操作系統(tǒng),發(fā)展到面向Internet階段。(3)實(shí)時(shí)操作系統(tǒng):20世紀(jì)9O年代,在分布控制、柔性制造、數(shù)字化通信和信息家電等巨大需求的牽引下,嵌入式系統(tǒng)進(jìn)一步飛速發(fā)展,而面向?qū)崟r(shí)信號(hào)處理算法的DSP產(chǎn)品則向著高速度、高精度、低功耗的方向發(fā)展。隨著硬件實(shí)時(shí)性要求的提高,嵌入式系統(tǒng)的軟件規(guī)模也不斷擴(kuò)大,逐漸形成了實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS),并開始成為嵌入式系統(tǒng)的主流。(4)面向網(wǎng)絡(luò):21世紀(jì)是一個(gè)網(wǎng)絡(luò)的時(shí)代,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,其與信息家電、工業(yè)控制技術(shù)等的結(jié)合日益緊密,為嵌入式系統(tǒng)的發(fā)展帶來了巨大的機(jī)遇,同時(shí)也對(duì)嵌入式系統(tǒng)廠商提出了新的挑戰(zhàn)。目前,嵌入式技術(shù)與網(wǎng)絡(luò)技術(shù)的結(jié)合正在推動(dòng)著嵌入式技術(shù)的飛速發(fā)展。1.嵌入式系統(tǒng)發(fā)展歷史1.1.2嵌入式系統(tǒng)發(fā)展傳統(tǒng)應(yīng)用:MCU作為主控新應(yīng)用:MCU+RF+Sensor+Algorithm2007~20132013~至今2.嵌入式系統(tǒng)發(fā)展趨勢(shì)1.1.2嵌入式系統(tǒng)發(fā)展(1)小型化、智能化、網(wǎng)絡(luò)化、可視化(2)云計(jì)算、可重構(gòu)、虛擬化等技術(shù)被進(jìn)一步應(yīng)用到嵌入式系統(tǒng)(3)嵌入式軟件開發(fā)平臺(tái)化、標(biāo)準(zhǔn)化,系統(tǒng)可升級(jí)、代碼可復(fù)用更受重視(4)低功耗、綠色環(huán)保和信息安全性1.1.3嵌入式系統(tǒng)應(yīng)用1.消費(fèi)電子嵌入式系統(tǒng)已廣泛應(yīng)用于智能消費(fèi)電子,如智能手機(jī)、平板電腦、家庭音響、玩具等。2.工業(yè)控制嵌入式系統(tǒng)在工業(yè)設(shè)備中應(yīng)用廣泛,如打印機(jī)、工業(yè)過程控制、數(shù)字機(jī)床、電網(wǎng)設(shè)備監(jiān)測(cè)等。3.醫(yī)療設(shè)備嵌入式系統(tǒng)已在醫(yī)療設(shè)備中取得廣泛應(yīng)用,如血糖儀、血氧計(jì)、人工耳蝸、心電監(jiān)護(hù)儀等。4.家庭智能管理系統(tǒng)家庭智能管理系統(tǒng)將是嵌入式系統(tǒng)未來最大的應(yīng)用領(lǐng)域之一,如水、電、煤氣表的遠(yuǎn)程自動(dòng)抄表,以及安全防水、防盜系統(tǒng)、智能家居系統(tǒng)等。1.1.3嵌入式系統(tǒng)應(yīng)用5.環(huán)境工程嵌入式系統(tǒng)在環(huán)境工程中的應(yīng)用也很廣泛,如水文資源實(shí)時(shí)監(jiān)測(cè)、防洪體系及水土質(zhì)量檢測(cè)、堤壩安全、地震監(jiān)測(cè)網(wǎng)、實(shí)時(shí)氣象信息網(wǎng)、水源和空氣污染監(jiān)測(cè)。6.機(jī)器人嵌入式芯片的發(fā)展將使機(jī)器人在微型化、高智能方面優(yōu)勢(shì)更加明顯,同時(shí)會(huì)大幅度降低機(jī)器人的價(jià)格,使其在工業(yè)領(lǐng)域和服務(wù)領(lǐng)域獲得更廣泛的應(yīng)用。1.1.3嵌入式系統(tǒng)應(yīng)用嵌入式學(xué)以致用,科技報(bào)國1.1.4嵌入式系統(tǒng)架構(gòu)本節(jié)小結(jié)1.掌握嵌入式系統(tǒng)定義;2.理解嵌入式系統(tǒng)特點(diǎn);3.了解嵌入式系統(tǒng)發(fā)展歷史及趨勢(shì);4.理解嵌入式系統(tǒng)應(yīng)用;5.了解嵌入式系統(tǒng)架構(gòu)。嵌入式系統(tǒng)硬件架構(gòu)嵌入式處理器1.2嵌入式系統(tǒng)硬件ARM微控制器本節(jié)小結(jié)1.2.1嵌入式系統(tǒng)硬件架構(gòu)1.2.2嵌入式處理器2.嵌入式處理器分類1.2.2嵌入式處理器3.ARM微控制器1.2.2嵌入式處理器3.ARM微控制器構(gòu)架核心v1ARM1v2ARM2v2aARM2As,ARM3v3ARM6,ARM600,ARM610,ARM7,ARM700,ARM710v4StrongARM,ARM8,ARM10v4TARM7TDMI,ARM720T,ARM740T,ARM9TDMI,ARM920T,ARM940Tv5TEARM9E-S,ARM10TDMI,AEM1020Ev6ARM1136J(F)-S,ARM1176JZ(F)-S,ARM11v6T2ARM1156T2(F)-Sv7ARMCortex-M0/3/4/7,ARMCortex-R4/5/7/8,ARMCortex-A5/7/8/9/15/17v8ARMCortex-M23/33,ARMCortex-R52,ARMCortex-A32/35/53/55/57/72/73/751.2.2嵌入式處理器3.ARM微控制器系列核心架構(gòu)應(yīng)用領(lǐng)域Cortex-ACortex-A8/9/55/73/75ARMv7/8用于高檔消費(fèi)電子和無線產(chǎn)品,可運(yùn)行大型操作系統(tǒng)。Cortex-RCortex-R5/52ARMv7/8用于實(shí)時(shí)性高的產(chǎn)品,運(yùn)行實(shí)時(shí)操作系統(tǒng)。Cortex-MCortex-M3/4/7ARMv7中低檔控制應(yīng)用,是當(dāng)前8//16單片機(jī)的換代產(chǎn)品。本節(jié)小結(jié)1.掌握嵌入式系統(tǒng)硬件架構(gòu);2.了解ARM微控制器架構(gòu)。嵌入式系統(tǒng)軟件架構(gòu)嵌入式系統(tǒng)編程思想1.3嵌入式系統(tǒng)軟件本節(jié)小結(jié)1.3.1嵌入式系統(tǒng)軟件架構(gòu)嵌入式系統(tǒng)軟件架構(gòu)是嵌入式系統(tǒng)軟件設(shè)計(jì)的綱領(lǐng),規(guī)定了軟件的組成部分及層級(jí)關(guān)系,良好的軟件架構(gòu)不僅能夠保證系統(tǒng)穩(wěn)定可靠地運(yùn)行,而且結(jié)構(gòu)清晰,便于代碼復(fù)用,能夠極大地提高了開發(fā)效率,在嵌入式系統(tǒng)軟件設(shè)計(jì)中具有舉足輕重的地位。三種常見的嵌入式系統(tǒng)軟件架構(gòu)有順序執(zhí)行的前后臺(tái)架構(gòu)、基于前后臺(tái)的時(shí)間片輪詢架構(gòu)和多任務(wù)操作系統(tǒng)架構(gòu)。1.3.1嵌入式系統(tǒng)軟件架構(gòu)1.順序執(zhí)行的前后臺(tái)架構(gòu)溫度監(jiān)控系統(tǒng)設(shè)計(jì)需求如下:(1)間隔50ms采集溫度信息;(2)通過LCD顯示溫度;(3)可通過按鍵設(shè)置溫度報(bào)警閾值;(4)溫度超過閾值進(jìn)行聲光報(bào)警。1.3.1嵌入式系統(tǒng)軟件架構(gòu)1.順序執(zhí)行的前后臺(tái)架構(gòu)1.3.1嵌入式系統(tǒng)軟件架構(gòu)2.基于前后臺(tái)的時(shí)間片輪詢架構(gòu)1.3.1嵌入式系統(tǒng)軟件架構(gòu)3.多任務(wù)操作系統(tǒng)架構(gòu)1.3.1嵌入式系統(tǒng)軟件架構(gòu)4.如何選擇在一些邏輯清晰、功能單一的應(yīng)用中適合選擇順序執(zhí)行的前后臺(tái)架構(gòu),這個(gè)軟件架構(gòu)往往能夠滿足大部分需求,如電飯煲、電磁爐、燈光控制等。在一些資源缺乏的單片機(jī)并且對(duì)系統(tǒng)可靠性要求較高的情況下,建議采用基于前后臺(tái)的時(shí)間片輪詢架構(gòu),因?yàn)檫@種架構(gòu)的系統(tǒng)耗費(fèi)比較小,但需要對(duì)時(shí)間片進(jìn)行深思熟慮的劃分。在一些功能復(fù)雜、邏輯控制較為困難的系統(tǒng)中,適合選擇多任務(wù)操作系統(tǒng)架構(gòu),比如視頻監(jiān)控系統(tǒng)、無人機(jī)、遠(yuǎn)程監(jiān)控等應(yīng)用場(chǎng)景。1.3.2嵌入式系統(tǒng)編程思想分層模塊化只能上層調(diào)用下層的函數(shù)接口,且不能不能跨層調(diào)用;模塊與模塊之間相互獨(dú)立;模塊功能只能增加,不能更改本節(jié)小結(jié)1.掌握嵌入式系統(tǒng)三種軟件架構(gòu);2.理解嵌入式系統(tǒng)編程思想。1.4本章總結(jié)1.5課后作業(yè)1.繪制本章內(nèi)容思維導(dǎo)圖。2.結(jié)合生活生產(chǎn),列舉嵌入式系統(tǒng)應(yīng)用,并描述嵌入式系統(tǒng)發(fā)展趨勢(shì)。3.結(jié)合實(shí)際應(yīng)用,設(shè)計(jì)嵌入式系統(tǒng)硬件架構(gòu)。4.制定學(xué)習(xí)計(jì)劃。謝謝欣賞THEEND嵌入式系統(tǒng)原理及應(yīng)用第2章STM32軟硬件基礎(chǔ)1STM32概述2最小系統(tǒng)設(shè)計(jì)3開發(fā)環(huán)境搭建4本章總結(jié)5課后作業(yè)STM32產(chǎn)品系列及命名規(guī)則STM32L431性能2.1STM32概述STM32L431外部結(jié)構(gòu)本節(jié)小結(jié)1.STM32產(chǎn)品系列2.1.1STM32產(chǎn)品系列及命名規(guī)則豐富的產(chǎn)品線面向不同應(yīng)用1.STM32產(chǎn)品系列2.1.1STM32產(chǎn)品系列及命名規(guī)則1.STM32產(chǎn)品系列2.1.1STM32產(chǎn)品系列及命名規(guī)則1.STM32產(chǎn)品系列2.1.1STM32產(chǎn)品系列及命名規(guī)則1.STM32產(chǎn)品系列2.1.1STM32產(chǎn)品系列及命名規(guī)則2.STM32命名規(guī)則2.1.1STM32產(chǎn)品系列及命名規(guī)則1.STM32L4系列性能2.1.2STM32L431性能2.STM32L431系列性能2.1.2STM32L431性能2.STM32L431系列性能2.1.2STM32L431性能2.1.3STM32L431外部結(jié)構(gòu)電源:Vxxx,共11個(gè)引腳復(fù)位:NRST時(shí)鐘控制:OSCxxx啟動(dòng)配置:BOOT0輸入輸出口:Pxx本節(jié)小結(jié)1.掌握常用STM32系列MCU主頻;2.掌握STM32命名規(guī)則;3.了解STM32L4性能;4.了解STM32外部結(jié)構(gòu)。最小系統(tǒng)概念最小設(shè)計(jì)示例2.2最小系統(tǒng)設(shè)計(jì)本節(jié)小結(jié)2.2.1最小系統(tǒng)概念2.2.2最小系統(tǒng)示例2.2.2最小系統(tǒng)示例1.電源2.2.2最小系統(tǒng)示例2.時(shí)鐘2.2.2最小系統(tǒng)示例2.時(shí)鐘時(shí)鐘提供時(shí)序,微控制器根據(jù)時(shí)序運(yùn)行。無源晶振:2個(gè)引腳;內(nèi)部無電源,需CPU內(nèi)部振蕩器才能產(chǎn)生時(shí)鐘信號(hào);便宜有源晶振:4個(gè)引腳;內(nèi)部有震蕩電路,通電直接輸出時(shí)鐘信號(hào);稍貴。不起振:萬用表測(cè)OSC_IN和OSC_OUT兩端電壓,低于1/2
VCC。程序下載失??!2.2.2最小系統(tǒng)示例3.復(fù)位4.下載2.2.2最小系統(tǒng)示例5.啟動(dòng)啟動(dòng)模式選擇引腳啟動(dòng)模式說明BOOT1BOOT0X0從Flash啟動(dòng)Flash被選為啟動(dòng)區(qū)域01從系統(tǒng)存儲(chǔ)器啟動(dòng)系統(tǒng)存儲(chǔ)器被選為啟動(dòng)區(qū)域11從SRAM啟動(dòng)SRAM被選為啟動(dòng)區(qū)域具有BOOT0和BOOT1引腳的MCU啟動(dòng)模式配置2.2.2最小系統(tǒng)示例5.啟動(dòng)具有BOOT0,無BOOT1引腳的MCU啟動(dòng)模式配置BOOT0nBOOT1FLASH_OPTR[23]nBOOT0FLASH_OPTR[27]nSWBOOT0FLASH_OPTR[26]Flash空啟動(dòng)模式0XX10從Flash啟動(dòng)XX10X從Flash啟動(dòng)0XX11從系統(tǒng)存儲(chǔ)器啟動(dòng)11X1X從系統(tǒng)存儲(chǔ)器啟動(dòng)X100X從系統(tǒng)存儲(chǔ)器啟動(dòng)10X1X從SRAMX000X從SRAM本節(jié)小結(jié)1.掌握STM32最小系統(tǒng)概念;2.熟練設(shè)計(jì)STM32最小系統(tǒng)。裸機(jī)開發(fā)環(huán)境RT-Thread開發(fā)環(huán)境2.3開發(fā)環(huán)境搭建本節(jié)小結(jié)2.3.1裸機(jī)開發(fā)環(huán)境1.軟件下載2.軟件安裝報(bào)錯(cuò)——安裝程序所在路徑包含中文3.軟件測(cè)試2.3.2RT-Thread開發(fā)環(huán)境1.軟件下載2.軟件安裝3.軟件測(cè)試本節(jié)小結(jié)1.掌握裸機(jī)開發(fā)環(huán)境搭建;2.掌握RT-Thread開發(fā)環(huán)境搭建。2.4本章總結(jié)2.5課后作業(yè)1.繪制本章內(nèi)容思維導(dǎo)圖。2.瀏覽STM32官網(wǎng),了解STM32系列MCU分類及性能。3.設(shè)計(jì)STM32最小系統(tǒng)。謝謝欣賞THEEND嵌入式系統(tǒng)原理及應(yīng)用第3章通用輸入輸出1GPIO概念及應(yīng)用場(chǎng)景2IO內(nèi)部電路結(jié)構(gòu)及工作模式3GPIO應(yīng)用實(shí)例45課后作業(yè)本章總結(jié)GPIO概念GPIO應(yīng)用場(chǎng)景3.1GPIO概念及應(yīng)用場(chǎng)景本節(jié)小結(jié)3.1.1GPIO概念輸入輸出(IO,Input/Output)是微控制器最基本的外設(shè)功能之一。GPIO(GeneralPurposeInputOutput)即通用功能輸入輸出,是相對(duì)于復(fù)用功能輸入輸出AFIO(AlternateFunctionInputOutput)而言的。GPIO一般用于輸出開關(guān)信號(hào)(高電平/低電平或1/0),接受開關(guān)信號(hào)輸入。AFIO是IO的第二功能,根據(jù)功能不同其輸入輸出遵守一定的協(xié)議,如作為串口收發(fā)時(shí),引腳電平根據(jù)收發(fā)數(shù)據(jù)變化,作為模擬輸入時(shí),引腳接受的為實(shí)際電壓。3.1.1GPIO概念根據(jù)型號(hào)不同,STM32FL431處理器上IO端口和引腳多少不同。64引腳的STM32L431Rx只有A、B、C、D四個(gè)IO端口,其中A、B和C端口,每個(gè)端口有16個(gè)IO引腳,D端口只有1個(gè)IO引腳,共49個(gè)IO引腳。而100引腳的STM32L431Vx有A、B、C、D和E五個(gè)IO端口,每個(gè)端口有16個(gè)IO引腳,共80個(gè)IO引腳。每個(gè)引腳都可以用作GPIO,也可用作AFIO。3.1.2GPIO應(yīng)用場(chǎng)景監(jiān)測(cè)開關(guān)信號(hào)控制開關(guān)設(shè)備1.監(jiān)測(cè)開關(guān)信號(hào)3.1.2GPIO應(yīng)用場(chǎng)景開關(guān)信號(hào)即只有開和關(guān)兩種狀態(tài)的信號(hào),如果開為高(低)電平,則關(guān)為低(高)電平,GPIO通過讀引腳電平狀態(tài)實(shí)現(xiàn)開關(guān)信號(hào)的監(jiān)測(cè),當(dāng)讀到引腳狀態(tài)為1時(shí),表明引腳輸入為高電平,此時(shí)可根據(jù)電路原理判斷輸入信號(hào)的開關(guān)狀態(tài)。GPIO搭配適當(dāng)電路可監(jiān)測(cè)任意開關(guān)信號(hào),包括無源和有源開關(guān)信號(hào)。1.監(jiān)測(cè)開關(guān)信號(hào)3.1.2GPIO應(yīng)用場(chǎng)景(1)無源開關(guān)信號(hào)無源開關(guān)信號(hào)指?jìng)鞲衅鬏敵霰旧聿痪邆涓叩碗娖?,通常有公共端(COM)、常開(NO)和(或)常閉(NC)等連接線,正常狀態(tài)時(shí),NO和COM斷路,NC和COM短路,當(dāng)傳感器檢測(cè)到異常時(shí),NO和COM短路,NC和COM斷路。常見的無源信號(hào)有各種按鍵、接近開關(guān)、限位開關(guān)、液位開關(guān)、水浸傳感器輸出、溫度傳感器輸出、繼電器輸出等。1.監(jiān)測(cè)開關(guān)信號(hào)3.1.2GPIO應(yīng)用場(chǎng)景(2)有源開關(guān)信號(hào)有源開關(guān)信號(hào)指?jìng)鞲衅鬏敵霰旧砭邆涓叩碗娖?,相?yīng)傳感器通常包含電源正極(VCC)、電源負(fù)極(GND)和輸出(OUT),如果正常狀態(tài)時(shí),OUT輸出高(低)電平,則異常狀態(tài)時(shí)OUT輸出低(高)電平。由于有源信號(hào)輸出具有極性,其輸出高電平電壓一般為5V、12V或24V,超出了MCU引腳承受能力,因此不能直接接到MCU的引腳,可采用光電耦合器進(jìn)行隔離。常見的有源信號(hào)有霍爾傳感器輸出、紅外傳感器輸出、火災(zāi)報(bào)警器輸出等。2.控制開關(guān)設(shè)備3.1.2GPIO應(yīng)用場(chǎng)景GPIO通過設(shè)置引腳電平高低實(shí)現(xiàn)外部設(shè)備或器件的開關(guān)控制,搭配適當(dāng)電路可控制任意設(shè)備開關(guān),控控制方式需結(jié)合原理圖實(shí)現(xiàn)。本節(jié)小結(jié)掌握GPIO應(yīng)用場(chǎng)景;內(nèi)部電路結(jié)構(gòu)工作模式3.2IO內(nèi)部電路結(jié)構(gòu)及工作模式本節(jié)小結(jié)3.2.1IO內(nèi)部電路結(jié)構(gòu)3.2.1IO內(nèi)部電路結(jié)構(gòu)1.保護(hù)二極管(鉗位二極管)兩個(gè)保護(hù)二極管可以防止引腳輸入電壓過高或過低,當(dāng)引腳電壓高于VDD時(shí),上方的二極管導(dǎo)通,當(dāng)引腳電壓低于VSS時(shí),下方的二極管導(dǎo)通,將輸入電壓鉗位在VCC和GND之間,防止不正常電壓輸入芯片導(dǎo)致芯片燒毀。3.2.1IO內(nèi)部電路結(jié)構(gòu)2.上拉電阻和下拉電阻通過配置上拉電阻和下拉電阻的開關(guān),可以控制引腳默認(rèn)的輸入狀態(tài)。開啟上拉電阻時(shí),引腳默認(rèn)輸入電壓為高電平,稱為上拉輸入模式;開啟下拉時(shí),引腳默認(rèn)輸入電壓為低電平,稱為下拉輸入模式;兩者都不開啟時(shí),默認(rèn)輸入電壓不確定,直接用電壓表測(cè)量其引腳電壓為1點(diǎn)幾伏,稱為浮空輸入模式。引腳作為輸入時(shí),一般要根據(jù)原理圖設(shè)置為“上拉輸入模式”或“下拉輸入模式”,使它有默認(rèn)狀態(tài)。3.2.1IO內(nèi)部電路結(jié)構(gòu)3.TTL施密特觸發(fā)器施密特觸發(fā)器(Schmidttrigger)是一種由電位觸發(fā)的觸發(fā)器(一般觸發(fā)器由時(shí)鐘沿觸發(fā)),它在輸入電壓遞減和遞增兩種不同變化方向有不同的閾值電壓,因此具有較強(qiáng)的抗干擾能力。施密特觸發(fā)器分為正向施密特觸發(fā)器和反向施密特觸發(fā)器,其符號(hào)及輸入輸出特性如圖3-3所示,橫軸為輸入,縱軸為輸出,STM32中采用的是正向施密特觸發(fā)器,對(duì)于正向施密特觸發(fā)器,當(dāng)輸入遞減至低于輸入低閾值(VIL)時(shí),輸出變?yōu)榈碗娖剑╒OL),當(dāng)輸入遞增至高于輸入高閾值(VIH)時(shí),輸出變?yōu)楦唠娖健?.2.1IO內(nèi)部電路結(jié)構(gòu)3.TTL施密特觸發(fā)器3.2.1IO內(nèi)部電路結(jié)構(gòu)4.輸入數(shù)據(jù)寄存器寄存器是MCU內(nèi)部用來存放指令和數(shù)據(jù)的有限存儲(chǔ)容量的高速存儲(chǔ)部件,其本質(zhì)是一種只包含存儲(chǔ)電路(由鎖存器或觸發(fā)器構(gòu)成)的時(shí)序邏輯電路。由于一個(gè)鎖存器或觸發(fā)器能存儲(chǔ)1位二進(jìn)制數(shù),因此N位寄存器是由N個(gè)鎖存器或觸發(fā)器構(gòu)成的。3.2.1IO內(nèi)部電路結(jié)構(gòu)4.輸入數(shù)據(jù)寄存器輸入數(shù)據(jù)寄存器是MCU用來保存輸入結(jié)果的寄存器,STM32每個(gè)端口都對(duì)應(yīng)有一個(gè)獨(dú)立的輸入寄存器,輸入寄存器為32位,但只用到低16位存儲(chǔ)對(duì)應(yīng)16個(gè)引腳的輸入狀態(tài),高16位保留。引腳輸入信號(hào)經(jīng)上拉電阻或下拉電阻后,輸入至TTL施密特觸發(fā)器,模擬信號(hào)被施密特觸發(fā)器轉(zhuǎn)化為高電平或低電平,然后以1(高電平)或0(低電平)的數(shù)字信號(hào)形式存儲(chǔ)至輸入數(shù)據(jù)寄存器的相應(yīng)位,讀輸入數(shù)據(jù)寄存器即可獲取引腳的輸入電平狀態(tài)。3.2.1IO內(nèi)部電路結(jié)構(gòu)5.置位/復(fù)位寄存器置位/復(fù)位寄存器為32位寄存器,直接與輸出數(shù)據(jù)寄存器相連,用于設(shè)置數(shù)據(jù)寄存器每一位的值。置位/復(fù)位寄存器每?jī)晌粚?duì)應(yīng)輸出數(shù)據(jù)寄存器的一位,如置位/復(fù)位的第0位設(shè)置為1,則輸出數(shù)據(jù)寄存器的第0位被設(shè)置為1,置位/復(fù)位的第16位設(shè)置為1,則輸出數(shù)據(jù)寄存器的第0位被設(shè)置為0。6.輸出數(shù)據(jù)寄存器端口被設(shè)置成輸出模式后,可以從輸出數(shù)據(jù)寄存器相應(yīng)位讀寫數(shù)據(jù)來判斷和控制IO口的輸出狀態(tài),與輸入數(shù)據(jù)寄存器一樣,輸出數(shù)據(jù)寄存器為32位,但只用到低16位,且只能以16位的方式讀取和設(shè)置,如要單獨(dú)設(shè)置某一位需通過置位/復(fù)位寄存器。3.2.1IO內(nèi)部電路結(jié)構(gòu)7.P-MOS管和N-MOS管P-MOS管和N-MOS管組成的單元電路使IO具有了“推挽輸出”和“開漏輸出”兩種輸出模式。當(dāng)IO設(shè)置為推挽輸出模式時(shí),如果設(shè)置輸出數(shù)據(jù)寄存器對(duì)應(yīng)位為1,則上方的P-MOS導(dǎo)通,下方的N-MOS截止,對(duì)外輸出高電平(3.3V),反之,如果設(shè)置輸出數(shù)據(jù)寄存器對(duì)應(yīng)位為0,則上方的P-MOS截止,下方的N-MOS導(dǎo)通,對(duì)外輸出低電平(0V)。3.2.1IO內(nèi)部電路結(jié)構(gòu)7.P-MOS管和N-MOS管P-MOS管和N-MOS管組成的單元電路使IO具有了“推挽輸出”和“開漏輸出”兩種輸出模式。當(dāng)IO設(shè)置為開漏輸出模式時(shí),則上方的P-MOS漏極開路,即P-MOS永遠(yuǎn)截止,此時(shí)如果設(shè)置輸出數(shù)據(jù)寄存器對(duì)應(yīng)位為1,P-MOS和N-MOS均截止,引腳對(duì)外呈現(xiàn)高阻態(tài),若想讓引腳輸出高電平,則引腳必須外接上拉電阻,由上拉電阻提供高電平。如果設(shè)置輸出數(shù)據(jù)寄存器對(duì)應(yīng)位為0,則P-MOS截止,N-MOS導(dǎo)通,對(duì)外輸出低電平(0V)。3.2.2IO工作模式8種模式:上拉輸入下拉輸入浮空輸入模擬輸入推挽輸出開漏輸出復(fù)用推挽輸出復(fù)用開漏輸出本節(jié)小結(jié)1.理解STM32內(nèi)部電路原理;2.掌握IO工作模式。狀態(tài)指示燈按鍵控制LED3.3應(yīng)用實(shí)例本節(jié)小結(jié)3.3.1狀態(tài)指示燈1.電路原理及需求分析嵌入式系統(tǒng)中通常采用LED指示系統(tǒng)工作狀態(tài),LED相關(guān)電路原理圖如圖所示,LED陽極接高電平,陰極經(jīng)限流電阻后接GPIO引腳,引腳輸出高電平LED熄滅,引腳輸出低電平,LED點(diǎn)亮。上電或復(fù)位后,系統(tǒng)進(jìn)行初始化,初始化完成后,LED1先以0.5s的間隔閃爍3次,然后進(jìn)入正常運(yùn)行狀態(tài),LED1以1s的間隔閃爍。3.3.1狀態(tài)指示燈2.實(shí)現(xiàn)過程(1)創(chuàng)建工程及最小系統(tǒng)配置。(2)引腳功能配置。(3)編程實(shí)現(xiàn)工程。3.3.2按鍵控制LED1.電路原理及需求分析采用按鍵控制LED,按鍵和LED相關(guān)電路原理圖如圖所示,按鍵一端接高電平,另一端經(jīng)限流電阻接GPIO引腳,下方電容和電阻構(gòu)成硬件消抖電路,按鍵松開時(shí)讀取引腳為低電平,按鍵按下時(shí)讀取引腳為高電平。3.3.2按鍵控制LED1.電路原理及需求分析(1)LED1(PA0)用于指示系統(tǒng)工作狀態(tài)。(2)按鍵K1通過輪詢的方式控制LED2,每按一次K1,LED2狀態(tài)發(fā)生一次改變。3.3.2按鍵控制LED2.實(shí)現(xiàn)過程(1)創(chuàng)建工程及最小系統(tǒng)配置。(2)引腳功能配置。(3)編程實(shí)現(xiàn)工程。本節(jié)小結(jié)1.掌握工程創(chuàng)建及最小系統(tǒng)配置;2.掌握GPIO輸出應(yīng)用方法;3.掌握GPIO輸入應(yīng)用方法。3.4本章總結(jié)3.5課后作業(yè)1.繪制本章內(nèi)容思維導(dǎo)圖。2.實(shí)現(xiàn)兩個(gè)實(shí)例功能,并總結(jié)實(shí)現(xiàn)過程。謝謝欣賞THEEND嵌入式系統(tǒng)原理及應(yīng)用第4章外部中斷1中斷基本概念2STM32外部中斷3EXTI應(yīng)用實(shí)例45課后作業(yè)本章總結(jié)HAL_GPIO_ReadPinHAL_GPIO_TogglePinHAL_GPIO_WritePin中斷概念本節(jié)小結(jié)4.1中斷基本概念中斷概念1.中斷中斷:MCU執(zhí)行主程序時(shí),出現(xiàn)了某些意外或緊急事件,需要MCU緊急處理,此時(shí)主程序被打斷,MCU轉(zhuǎn)而處理緊急事件,處理完畢后再返回繼續(xù)執(zhí)行主程序的過程。中斷服務(wù)程序通常為一個(gè)函數(shù),該函數(shù)實(shí)現(xiàn)緊急事件處理功能。中斷源16+67斷點(diǎn)程序指針:指向當(dāng)前主程序運(yùn)行指令的下一條指令中斷概念1.中斷中斷中斷處理刻不容緩大局意識(shí)中斷概念2.中斷向量
中斷服務(wù)程序在內(nèi)存中的入口地址稱為中斷向量,把系統(tǒng)中所有中斷向量集中起來放到存儲(chǔ)器的某一區(qū)域內(nèi),這個(gè)存儲(chǔ)中斷向量的存儲(chǔ)區(qū)域稱為中斷向量表。3.嵌套向量中斷控制器嵌套向量中斷控制器(NVIC,NestedVectoredInterruptController)是STM32中斷系統(tǒng)的核心,其作用是為所有中斷提供優(yōu)先級(jí),實(shí)現(xiàn)中斷嵌套。中斷概念4.中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)表示中斷的重要程度,STM32具有兩類優(yōu)先級(jí),即搶占優(yōu)先級(jí)(preemptionpriority)和響應(yīng)優(yōu)先級(jí)(subpriority),可通過中斷優(yōu)先級(jí)寄存器(NVIC_IPR)進(jìn)行分組配置。中斷優(yōu)先級(jí)寄存器采用8位表示優(yōu)先級(jí),理論上可以配置256個(gè)中斷優(yōu)先級(jí),實(shí)際上STM32只用了高4位,并可通過編程將這4位分組為搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)。中斷優(yōu)先級(jí)用數(shù)字表示,數(shù)字越小,優(yōu)先級(jí)越高,中斷分組默認(rèn)配置為第4組。判斷中斷優(yōu)先級(jí)時(shí)先判斷搶占優(yōu)先級(jí),搶占優(yōu)先級(jí)高,則該中斷優(yōu)先級(jí)高。如果搶占優(yōu)先級(jí)相同,則根據(jù)響應(yīng)優(yōu)先級(jí)判斷,如果響應(yīng)優(yōu)先級(jí)也相同,則根據(jù)中斷通道向量地址判斷。中斷概念4.中斷優(yōu)先級(jí)優(yōu)先級(jí)分組搶占優(yōu)先級(jí)響應(yīng)優(yōu)先級(jí)第0組:NVIC_PriorityGroup_0無4位/16級(jí)(0~15)第1組:NVIC_PriorityGroup_11位/2級(jí)(0~1)3位/8級(jí)(0~7)第2組:NVIC_PriorityGroup_22位/4級(jí)(0~3)2位/4級(jí)(0~3)第3組:NVIC_PriorityGroup_33位/8級(jí)(0~7)1位/2級(jí)(0~1)第4組:NVIC_PriorityGroup_44位/16級(jí)(0~15)無中斷概念5.中斷執(zhí)行順序
多個(gè)中斷發(fā)生時(shí),MCU根據(jù)中斷優(yōu)先級(jí)確定中斷執(zhí)行順序,中斷執(zhí)行遵循如下規(guī)則:
(1)允許中斷嵌套,即優(yōu)先執(zhí)行搶占優(yōu)先級(jí)高的中斷。如執(zhí)行中斷A時(shí),發(fā)生了搶占優(yōu)先級(jí)更高的中斷B,則暫停中斷A處理過程轉(zhuǎn)去處理中斷B,處理完中斷B后再繼續(xù)處理中斷A,這個(gè)過程稱為中斷嵌套。
中斷嵌套只與搶占優(yōu)先級(jí)有關(guān),搶占優(yōu)先級(jí)不同,才能發(fā)生中斷嵌套。
(2)當(dāng)搶占優(yōu)先級(jí)相同時(shí),根據(jù)中斷發(fā)生順序執(zhí)行,哪個(gè)中斷先發(fā)生,則先執(zhí)行哪個(gè)中斷,如果幾個(gè)搶占優(yōu)先級(jí)相同的中斷同時(shí)發(fā)生,則優(yōu)先執(zhí)行響應(yīng)優(yōu)先級(jí)高的中斷。中斷概念5.中斷執(zhí)行順序有三個(gè)中斷A、B、C和D,搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)分別為(3,1)、(2,2)、(1,3)和(2,3),則根據(jù)中斷發(fā)生順序有以下幾種執(zhí)行情況:(1)當(dāng)4個(gè)中斷同時(shí)發(fā)生時(shí),中斷執(zhí)行順序?yàn)镃、B、D、A。(2)執(zhí)行中斷A時(shí),發(fā)生了中斷B,由于中斷B的搶占優(yōu)先級(jí)更高,因此可以打斷中斷A,即發(fā)生中斷嵌套。(3)執(zhí)行中斷B時(shí),發(fā)生了中斷D,由于中斷B和中斷D的響應(yīng)優(yōu)先級(jí)相同,不會(huì)產(chǎn)生嵌套,中斷B執(zhí)行完后,再執(zhí)行中斷D。如果中斷B和中斷D同時(shí)發(fā)生,由于中斷B的響應(yīng)優(yōu)先級(jí)更高,因此先執(zhí)行中斷B。本節(jié)小結(jié)理解中斷概念;掌握中斷優(yōu)先級(jí)分組;理解中斷執(zhí)行順序。EXTI主要特征EXTI內(nèi)部電路4.2STM32外部中斷EXTI應(yīng)用步驟本節(jié)小結(jié)4.2.1EXTI主要特征STM32外部中斷是通常指引腳電平變化引起的中斷,由NVIC和外部中斷事件控制器(EXTI,ExtendedInterruptsandEventsController)控制。EXTI負(fù)責(zé)管理所有的外部中斷和內(nèi)部異步事件,并產(chǎn)生中斷請(qǐng)求。STM32外部中斷的主要特征如下:(1)可產(chǎn)生最多39和事件/中斷請(qǐng)求,包括25個(gè)可配置中斷和14個(gè)直接中斷;(2)每個(gè)事件/中斷具有獨(dú)立的屏蔽控制;(3)可配置中斷包括IO引腳中斷和部分其它外設(shè)中斷,支持上升沿或下降沿觸發(fā),并且具有專用的狀態(tài)位用于指示中斷源。(4)直接中斷主要是部分外設(shè)產(chǎn)生的喚醒事件,用于喚醒設(shè)備,其狀態(tài)標(biāo)志由相應(yīng)外設(shè)提供。(5)所有中斷可通過軟件進(jìn)行模擬。4.2.2EXTI內(nèi)部電路4.2.2EXTI內(nèi)部電路EXTI之所有能夠?qū)崿F(xiàn)中斷控制,是因?yàn)槠渚哂袊?yán)謹(jǐn)合理的硬件電路,以STM32L4系列為例,其EXTI內(nèi)部電路結(jié)構(gòu)如圖4-2所示,主要由邊沿檢測(cè)電路、下降沿觸發(fā)選擇寄存器、上升沿觸發(fā)選擇寄存器、中斷屏蔽寄存器、掛起請(qǐng)求寄存器等構(gòu)成。下面以GPIO中斷為例講解其工作原理,欲產(chǎn)生GPIO中斷,首先應(yīng)配置下降沿觸發(fā)選擇寄存器或(和)上升沿觸發(fā)選擇寄存器,當(dāng)其相應(yīng)位配置為1時(shí),邊沿檢測(cè)電路即可檢測(cè)到電平變化;然后配置中斷屏蔽寄存器相應(yīng)位為1,當(dāng)邊沿檢測(cè)電路檢測(cè)到電平變化時(shí),即可將掛起請(qǐng)求寄存器相應(yīng)位置1,進(jìn)而引發(fā)中斷,CPU響應(yīng)該中斷后即可執(zhí)行響應(yīng)的中斷服務(wù)程序。綜上所述,中斷提供了一個(gè)完全由硬件自動(dòng)完成的程序執(zhí)行通道,不要軟件的參與,降低了CPU的負(fù)荷,提高了響應(yīng)速度,是利用硬件提升MCU處理事件能力的有效方法。4.2.3EXTI應(yīng)用步驟EXTI是最常用的功能之一,主要用于開關(guān)量監(jiān)測(cè),采用STM32CubeIDE進(jìn)行開發(fā)時(shí),EXTI的配置主要包括引腳功能選擇、工作模式詳細(xì)配置、NVIC設(shè)置和中斷服務(wù)程序?qū)崿F(xiàn)四大步驟。1.引腳功能選擇以引腳PC0為例,首先選中PC0,然后設(shè)置其為GPIO_EXTI0。2.工作模式詳細(xì)配置4.2.3EXTI應(yīng)用步驟EXTI是最常用的功能之一,主要用于開關(guān)量監(jiān)測(cè),采用STM32CubeIDE進(jìn)行開發(fā)時(shí),EXTI的配置主要包括引腳功能選擇、工作模式詳細(xì)配置、NVIC設(shè)置和中斷服務(wù)程序?qū)崿F(xiàn)四大步驟。3.NVIC設(shè)置4.中斷服務(wù)程序?qū)崿F(xiàn)voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin){ /*判斷引腳*/ if(GPIO_Pin==User_Label) { /*具體功能實(shí)現(xiàn)*/ }}本節(jié)小結(jié)1.理解EXTI內(nèi)部電路原理;2.掌握EXTI應(yīng)用步驟。按鍵控制LED本節(jié)小結(jié)4.3應(yīng)用實(shí)例按鍵控制LED1.電路原理及需求分析采用按鍵控制LED,按鍵和LED相關(guān)電路原理圖如圖所示,按鍵一段接高電平,另一端經(jīng)限流電阻接GPIO引腳,下方電容和電阻構(gòu)成硬件消抖電路,按鍵松開時(shí)讀取引腳為低電平,按鍵按下時(shí)讀取引腳為高電平。按鍵控制LED1.電路原理及需求分析(1)LED1(PA0)用于指示系統(tǒng)工作狀態(tài),上電或復(fù)位后,系統(tǒng)進(jìn)行初始化,初始化完成后,LED1先以0.5s的間隔閃爍3次,然后進(jìn)入正常運(yùn)行狀態(tài),LED1以1s的間隔閃爍。(2)按鍵K1通過輪詢的方式控制LED2,每按一次K1,LED2狀態(tài)發(fā)生一次改變。(3)按鍵K2通過外部中斷的方式控制LED2,每按一次K1,LED2狀態(tài)發(fā)生一次改變。按鍵控制LED2.實(shí)現(xiàn)過程(1)創(chuàng)建工程及最小系統(tǒng)配置。(2)引腳功能配置。(3)編程實(shí)現(xiàn)工程。main.c/*USERCODEBEGIN4*/
/*外部中斷回調(diào)函數(shù)*/voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin){ if(GPIO_Pin==K2_Pin) { HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);//LED2引腳電平翻轉(zhuǎn) }}/*USERCODEEND4*/本節(jié)小結(jié)1.掌握工程創(chuàng)建及最小系統(tǒng)配置;2.掌握GPIO輸出應(yīng)用方法;3.掌握GPIO輸入應(yīng)用方法;4.掌握EXTI配置及中斷服務(wù)程序編寫。4.4本章總結(jié)4.5課后作業(yè)1.繪制本章內(nèi)容思維導(dǎo)圖。2.實(shí)現(xiàn)實(shí)例功能,并總結(jié)實(shí)現(xiàn)過程。謝謝欣賞THEEND嵌入式系統(tǒng)原理及應(yīng)用第5章定時(shí)器1定時(shí)/計(jì)數(shù)器基本概念2STM32定時(shí)器3TIM應(yīng)用實(shí)例45課后作業(yè)本章總結(jié)定時(shí)器與計(jì)數(shù)器的概念和區(qū)別定時(shí)器基本問題5.1定時(shí)/計(jì)數(shù)器基本概念定時(shí)器分類本節(jié)小結(jié)5.1.1定時(shí)器與計(jì)數(shù)器的概念和區(qū)別定時(shí)器/計(jì)數(shù)器是MCU基本功能之一,在實(shí)際應(yīng)用中主要用于精確定時(shí)和外部計(jì)數(shù),通常簡(jiǎn)稱為定時(shí)器?;谇昂笈_(tái)的時(shí)間片輪詢架構(gòu)中的時(shí)間片就是由定時(shí)器產(chǎn)生的,即由一個(gè)定時(shí)器產(chǎn)生精確定時(shí),主程序根據(jù)時(shí)間片選擇執(zhí)行相應(yīng)的任務(wù)。STM32微控制器提供基本定時(shí)器、通用定時(shí)器、高級(jí)定時(shí)器等多種不同性能的定時(shí)器以滿足不同場(chǎng)合應(yīng)用需求。5.1.1定時(shí)器與計(jì)數(shù)器的概念和區(qū)別定時(shí)器是對(duì)周期固定的MCU內(nèi)部外設(shè)時(shí)鐘信號(hào)進(jìn)行計(jì)數(shù),當(dāng)達(dá)到計(jì)數(shù)值時(shí)會(huì)產(chǎn)生中斷,從而達(dá)到精確定時(shí)的目的。如脈沖信號(hào)周期為1ms,要產(chǎn)生1s精確定時(shí),則可設(shè)置定時(shí)器從0開始向上遞增計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到1000時(shí)觸發(fā)中斷。計(jì)數(shù)器是對(duì)周期不確定的外部脈沖進(jìn)行計(jì)數(shù),通常用于統(tǒng)計(jì)一段時(shí)間內(nèi)外部脈沖個(gè)數(shù),可用于信號(hào)頻率測(cè)量、旋轉(zhuǎn)設(shè)備轉(zhuǎn)速測(cè)量、流水線工件計(jì)數(shù)等應(yīng)用。5.1.1定時(shí)器與計(jì)數(shù)器的概念和區(qū)別本質(zhì)上,定時(shí)器和計(jì)數(shù)器都是計(jì)數(shù)器,區(qū)別是計(jì)數(shù)對(duì)象不同,所對(duì)應(yīng)的應(yīng)用場(chǎng)景也不同,定時(shí)器可看成計(jì)數(shù)器的一種特例。由于精確定時(shí)是定時(shí)器/計(jì)數(shù)器的最基本功能,因此,行業(yè)內(nèi)通常將定時(shí)器/計(jì)數(shù)器簡(jiǎn)稱為定時(shí)器。5.1.2定時(shí)器基本問題定時(shí)器應(yīng)用中通常會(huì)面臨四個(gè)基本問題,即周期、位數(shù)、計(jì)數(shù)值和中斷處理。周期即每秒鐘脈沖個(gè)數(shù)。定時(shí)器的位數(shù)決定了定時(shí)器的計(jì)數(shù)最大值,如八位定時(shí)器計(jì)數(shù)最大值為255,十六位定時(shí)器計(jì)數(shù)最大值為65535。計(jì)數(shù)值指定時(shí)器要計(jì)的脈沖個(gè)數(shù),通過設(shè)置計(jì)數(shù)初值和計(jì)數(shù)終止即可確定計(jì)數(shù)值。中斷處理是脈沖個(gè)數(shù)達(dá)到定時(shí)器計(jì)數(shù)值時(shí)要進(jìn)行的中斷服務(wù)。5.1.2定時(shí)器基本問題容量為300ml,原有水100ml,注水速度為1ml/s,量杯中水量為200時(shí),停止注水,并將水倒入反應(yīng)罐中。對(duì)應(yīng)到定時(shí)器上,則計(jì)數(shù)最大值為300,計(jì)數(shù)初值為100,計(jì)數(shù)終值為200,可實(shí)現(xiàn)100s的精確定時(shí),將水倒入反應(yīng)罐為中斷處理。如果要實(shí)現(xiàn)50s的精確定時(shí),可以設(shè)置計(jì)數(shù)初值為200(100),計(jì)數(shù)終值為250(150),只要保證終值-初值為50即可。5.1.3定時(shí)器分類STM32L431RCT6微控制器有1個(gè)滴答定時(shí)器,1個(gè)IWDG,1個(gè)WWDG,1個(gè)RTC,2個(gè)低功耗定時(shí)器,1個(gè)高級(jí)定時(shí)器(TIM1),3個(gè)通用定時(shí)器(TIM2、TIM15和TIM16),2個(gè)基本定時(shí)器(TIM6和TIM7)。5.1.3定時(shí)器分類(1)滴答定時(shí)器STM32的滴答定時(shí)器(systemticktimer,SysTick)是一個(gè)24位的定時(shí)器,具有自動(dòng)重載和溢出中斷功能。主要用于產(chǎn)生操作系統(tǒng)的時(shí)鐘節(jié)拍,方便系統(tǒng)在不同系列MCU的移植。此外,在前后臺(tái)架構(gòu)中還可以產(chǎn)生延時(shí),如HAL_Delay函數(shù)就是用SysTick實(shí)現(xiàn)的ms延時(shí)函數(shù)。5.1.3定時(shí)器分類(2)看門狗定時(shí)器看門狗定時(shí)器主要作用是當(dāng)系統(tǒng)異常時(shí)自動(dòng)復(fù)位,STM32提供了一個(gè)獨(dú)立看門狗定時(shí)器(Independentwatchdog,IWGD)和一個(gè)系統(tǒng)窗口看門狗定時(shí)器(Systemwindowwatchdog,WWDG)。5.1.3定時(shí)器分類(3)實(shí)時(shí)時(shí)鐘STM32的實(shí)時(shí)時(shí)鐘(Real-timeclock,RTC)是一個(gè)獨(dú)立的BCD(binary-codeddecimal,二進(jìn)制表示十進(jìn)制)定時(shí)器,為VBAT提供獨(dú)立電源(通常采用紐扣電池)后,即使系統(tǒng)斷電,RTC仍可繼續(xù)運(yùn)行,主要用于記錄時(shí)間,提供日歷。5.1.3定時(shí)器分類(4)低功耗定時(shí)器STM32L系列MCU具有多個(gè)低功耗定時(shí)器(Low-powertimer,LPTIM),LPTIM具有獨(dú)立的時(shí)鐘,可以在停止模式(stopmode)下運(yùn)行,主要用于功耗管理。5.1.3定時(shí)器分類(5)常規(guī)定時(shí)器常規(guī)定時(shí)器包括高級(jí)定時(shí)器、通用定時(shí)器和基本定時(shí)器主要功能高級(jí)定時(shí)器TIM1通用定時(shí)器TIM2/15/16基本定時(shí)器TIM6/7內(nèi)部時(shí)鐘源(8MHz)●●●帶16位分頻的計(jì)數(shù)單元●●●更新中斷和DMA●●●計(jì)數(shù)方向向上、向下、雙向向上、向下、雙向向上外部事件計(jì)數(shù)●●○本節(jié)小結(jié)理解定時(shí)/計(jì)數(shù)器概念;掌握定時(shí)器基本問題;了解定時(shí)器分類。TIM內(nèi)部電路脈沖寬度調(diào)制5.2STM32定時(shí)器本節(jié)小結(jié)5.2.1TIM內(nèi)部電路結(jié)構(gòu)輸入捕獲:高電平持續(xù)時(shí)間輸出比較:PWM時(shí)基單元時(shí)鐘源定時(shí)外部計(jì)數(shù)定時(shí)器級(jí)聯(lián)5.2.1TIM內(nèi)部電路結(jié)構(gòu)1.時(shí)基單元預(yù)分頻器是一個(gè)16位的寄存器,其作用是對(duì)計(jì)數(shù)時(shí)鐘(CK_PSC)進(jìn)行0~65535分頻。如計(jì)數(shù)時(shí)鐘為80MHz,預(yù)分頻器值為79,則計(jì)數(shù)時(shí)鐘經(jīng)預(yù)分頻器80(79+1)分頻后,將分頻后的時(shí)鐘(CK_CNT)輸入至計(jì)數(shù)器,計(jì)數(shù)器的值每1us改變1次。系統(tǒng)時(shí)鐘是80MHz,1ms定時(shí),則PSC=?,ARR=?PSC=8000-1ARR=10-11us5.2.1TIM內(nèi)部電路結(jié)構(gòu)1.時(shí)基單元計(jì)數(shù)器對(duì)CK_CNT進(jìn)行計(jì)數(shù),如設(shè)置為向上計(jì)數(shù)模式,則每個(gè)CK_CNT周期,TIMx_CNT值加1,TIMx_CNT值達(dá)到終值時(shí),產(chǎn)生溢出事件,進(jìn)而觸發(fā)中斷。如設(shè)置為向下計(jì)數(shù)模式,則每個(gè)CK_CNT周期,TIMx_CNT值減1,當(dāng)其值減為0時(shí),產(chǎn)生觸發(fā)事件,觸發(fā)中斷。5.2.1TIM內(nèi)部電路結(jié)構(gòu)1.時(shí)基單元自動(dòng)重裝載寄存器用于自動(dòng)設(shè)置寄存器的計(jì)數(shù)終值或計(jì)數(shù)初值,當(dāng)計(jì)數(shù)模式為向上計(jì)數(shù)時(shí),產(chǎn)生溢出事件后,自動(dòng)重裝載寄存器的值作為計(jì)數(shù)終值自動(dòng)填入計(jì)數(shù)器(計(jì)數(shù)初值為0),當(dāng)計(jì)數(shù)模式為向下計(jì)數(shù)時(shí)(計(jì)數(shù)終值為0),產(chǎn)生溢出事件后,自動(dòng)重裝載寄存器的值作為計(jì)數(shù)初值自動(dòng)填入計(jì)數(shù)器。5.2.1TIM內(nèi)部電路結(jié)構(gòu)2.捕獲比較單元一般通用定時(shí)器具有4路輸入捕獲/輸出比較通道(TIMx_CH1、TIMx_CH2、TIMx_CH3和TIMx_CH4)。輸入捕獲/輸出比較的核心是捕獲/比較寄存器(CCR),每個(gè)輸入捕獲/輸出比較通道都具有獨(dú)立的捕獲/比較寄存器。輸入捕獲/輸出比較通道的輸入信號(hào)經(jīng)多路復(fù)用、輸入濾波器、邊沿檢測(cè)器和預(yù)分頻器后更新值捕獲比較寄存器。捕獲比較寄存器與計(jì)數(shù)器進(jìn)行比較,當(dāng)捕獲比較寄存器的值大于或小于計(jì)數(shù)器的值時(shí),會(huì)產(chǎn)生輸入捕獲事件、比較輸出事件或輸出脈沖信號(hào)。5.2.2脈沖寬度調(diào)制1.PWM參數(shù)PWM信號(hào)具有三個(gè)基本參數(shù),即周期、頻率和占空比。周期是一個(gè)完整的PWM波形所持續(xù)的時(shí)間;頻率是周期的倒數(shù),即1s內(nèi)完整PWM波形的個(gè)數(shù),單位為Hz;占空比是高電平持續(xù)時(shí)間與周期之比,用百分比表示。脈沖寬度調(diào)制(Pulse-WidthModulation,PWM)簡(jiǎn)稱脈寬調(diào)制,是一種對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法,可以利用MCU的數(shù)字輸出,通過對(duì)一系列脈沖寬度進(jìn)行調(diào)制,實(shí)現(xiàn)對(duì)模擬電路的控制,廣泛應(yīng)用于測(cè)量、通信、工控等領(lǐng)域。5.2.2脈沖寬度調(diào)制PWM對(duì)模擬信號(hào)編碼的本質(zhì)是將脈沖信號(hào)加到模擬負(fù)載,高電平時(shí)提供直流輸出,低電平時(shí)斷開直流輸出。理論上,通過對(duì)高電平和低電平的時(shí)間控制,可以輸出任意不大于高電平電壓的模擬電壓,輸出電壓為高電平電壓與占空比的乘積。2.PWM電壓調(diào)節(jié)原理任何時(shí)候,都能輸出平均電壓?5.2.2脈沖寬度調(diào)制STM32通用定時(shí)器和高級(jí)定時(shí)器具有PWM輸出功能,通過設(shè)置預(yù)分頻器(PSC)、自動(dòng)重裝載寄存器(ARR)和捕獲比較寄存器(CCR)值可獲得任意周期(頻率)和占空比的PWM輸出。3.STM32輸出PWM原理PSC和ARR用于控制PWM的周期,CCR用于控制PWM的占空比。當(dāng)周期確定后,每個(gè)周期CNT值加1,并與CCR值比較,當(dāng)CNT值小于CCR值時(shí),CH通道輸出高電平,當(dāng)CNT值大于CCR值時(shí),CH通道輸出低電平,當(dāng)CNT值等于ARR值時(shí),CNT值自動(dòng)置零,重新開始計(jì)數(shù)并與CCR值進(jìn)行比較,進(jìn)而實(shí)現(xiàn)連續(xù)的PWM輸出。5.2.2脈沖寬度調(diào)制CH通道輸出信號(hào)與計(jì)數(shù)方向、PWM模式和輸出極性均有關(guān)系。輸出極性包括高和低兩種極性,決定了CH輸出的有效電平,如極性為高則有效電平為高電平,反之有效電平為低電平。當(dāng)計(jì)數(shù)方向?yàn)橄蛏匣蛳蛳掠?jì)數(shù)時(shí),PWM有兩種模式,即PWM模式一和PWM模式二。4.CH輸出信號(hào)與計(jì)數(shù)方向、PWM模式和輸出極性的關(guān)系計(jì)數(shù)方向CNT與CCRPWM模式PWM模式一PWM模式二向上計(jì)數(shù)CNT<CCR有效電平無效電平CNT>CCR無效電平有效電平向下計(jì)數(shù)CNT<CCR無效電平有效電平CNT>CCR有效電平無效電平本節(jié)小結(jié)1.掌握TIM計(jì)數(shù)原理;2.掌握PWM電壓調(diào)節(jié)原理;3.掌握STM32的PWM輸出原理。TIM應(yīng)用實(shí)例1——精確定時(shí)TIM應(yīng)用實(shí)例2——PWM控制狀態(tài)指示燈5.3應(yīng)用實(shí)例本節(jié)小結(jié)5.3.1TIM應(yīng)用實(shí)例1——精確定時(shí)1.電路原理及需求分析采用按鍵控制LED,按鍵和LED相關(guān)電路原理圖如圖所示,按鍵一段接高電平,另一端經(jīng)限流電阻接GPIO引腳,下方電容和電阻構(gòu)成硬件消抖電路,按鍵松開時(shí)讀取引腳為低電平,按鍵按下時(shí)讀取引腳為高電平。5.3.1TIM應(yīng)用實(shí)例1——精確定時(shí)1.電路原理及需求分析(1)LED1(PA0)用于指示系統(tǒng)工作狀態(tài),上電或復(fù)位后,系統(tǒng)進(jìn)行初始化,初始化完成后,LED1先以0.5s的間隔閃爍3次,然后進(jìn)入正常運(yùn)行狀態(tài),LED1以1s的間隔閃爍。(2)按鍵K1通過輪詢的方式控制LED2,每按一次K1,LED2狀態(tài)發(fā)生一次改變。(3)按鍵K2通過外部中斷的方式控制LED2,每按一次K1,LED2狀態(tài)發(fā)生一次改變。5.3.1TIM應(yīng)用步驟1——精確定時(shí)2.實(shí)現(xiàn)過程(1)創(chuàng)建工程及最小系統(tǒng)配置。(2)定時(shí)器配置。(3)編程實(shí)現(xiàn)工程。5.3.1TIM應(yīng)用步驟2——PWM控制狀態(tài)指示燈1.電路原理及需求分析采用按鍵控制LED,按鍵和LED相關(guān)電路原理圖如圖所示,按鍵一段接高電平,另一端經(jīng)限流電阻接GPIO引腳,下方電容和電阻構(gòu)成硬件消抖電路,按鍵松開時(shí)讀取引腳為低電平,按鍵按下時(shí)讀取引腳為高電平。1.電路原理及需求分析(1)LED1(PA0)用于指示系統(tǒng)工作狀態(tài),上電或復(fù)位后,系統(tǒng)進(jìn)行初始化,初始化完成后進(jìn)入正常運(yùn)行狀態(tài),LED1以1s的改變亮度,亮度共10級(jí),從亮度1逐漸變?yōu)榱炼?0,再從亮度10變?yōu)榱炼?,以此循環(huán)。(2)按鍵K1通過輪詢的方式控制LED2,每按一次K1,LED2狀態(tài)發(fā)生一次改變。(3)按鍵K2通過外部中斷的方式控制LED2,每按一次K1,LED2狀態(tài)發(fā)生一次改變。5.3.1TIM應(yīng)用步驟2——PWM控制狀態(tài)指示燈2.實(shí)現(xiàn)過程(1)創(chuàng)建工程及最小系統(tǒng)配置。(2)PWM配置。(3)編程實(shí)現(xiàn)工程。5.3.1TIM應(yīng)用步驟2——PWM控制狀態(tài)指示燈本節(jié)小結(jié)1.掌握工程創(chuàng)建及最小系統(tǒng)配置;2.掌握TIM精確定時(shí)應(yīng)用方法;3.掌握TIM輸出PWM應(yīng)用方法。5.4本章總結(jié)5.5課后作業(yè)1.繪制本章內(nèi)容思維導(dǎo)圖。2.實(shí)現(xiàn)實(shí)例功能,并總結(jié)實(shí)現(xiàn)過程。謝謝欣賞THEEND嵌入式系統(tǒng)原理及應(yīng)用第6章通用同步異步通信1通信基礎(chǔ)2STM32串口系統(tǒng)3USART應(yīng)用實(shí)例45課后作業(yè)本章總結(jié)通信分類異步串行通信6.1通信基礎(chǔ)本節(jié)小結(jié)6.1.1通信分類嵌入式系統(tǒng)中的通信是指MCU與MCU或外圍設(shè)備之間的信息交換。STM32L系列微控制器提供了通用同步/異步收發(fā)器(USART,UniversalSynchronousAsynchronousReceiverTransmitter)和低功耗通用異步收發(fā)器(LPUART,Lowpoweruniversalsynchronousasynchronousreceivertransmitter)用于同步或異步通信。6.1.1通信分類6.1.1通信分類6.1.1通信分類1.并行通信和串行通信并行通信用多條數(shù)據(jù)線將數(shù)據(jù)字節(jié)中的各位同時(shí)傳輸。效率高,成本高。串行通信用一條數(shù)據(jù)線將數(shù)據(jù)字節(jié)中的各位逐位傳輸。成本低,主流通信。6.1.1通信分類2.同步串行通信和異步串行通信有時(shí)鐘線,傳輸信息幀(多個(gè)字符),用于芯片間通信。無時(shí)鐘線,傳輸字符幀(一個(gè)字符),加起停標(biāo)志,通信速率相同,用于設(shè)備通信。6.1.1通信分類3.通信方向6.1.2異步串行通信異步串行通信簡(jiǎn)稱串口通信,為了保證通信時(shí)收發(fā)數(shù)據(jù)的一致,發(fā)送方和接收方須遵守一些共同的約定,其中最重要的是字符幀格式和波特率。1.字符幀格式異步串行通信中一個(gè)字符幀通常由起始位、數(shù)據(jù)位、校驗(yàn)位和停止位四部分構(gòu)成。6.1.2異步串行通信先發(fā)低位,后發(fā)高位!6.1.2異步串行通信起始位:1位,其值為0(低電平)。數(shù)據(jù)位:可設(shè)置為7至9個(gè)數(shù)據(jù)位(包含校驗(yàn)位),一般無校驗(yàn)時(shí)設(shè)置為8個(gè)數(shù)據(jù)位,有校驗(yàn)時(shí)設(shè)置為9個(gè)數(shù)據(jù)位,其值為0(低電平)或1(高電平)。停止位:可設(shè)置為0.5位、1位、1.5位或2位,其值為1(高電平),通常設(shè)置為1位??臻e位:數(shù)據(jù)線為高電平,表示無數(shù)據(jù)傳輸。6.1.2異步串行通信校驗(yàn)位:用于校驗(yàn)數(shù)據(jù)傳輸正確與否,可設(shè)置為奇校驗(yàn)、偶校驗(yàn)或無校驗(yàn)。設(shè)置為奇偶校驗(yàn)時(shí),數(shù)據(jù)位的最高位為校驗(yàn)位,設(shè)置為無校驗(yàn)時(shí)數(shù)據(jù)位最高位為數(shù)據(jù)的最高位,無校驗(yàn)位。若設(shè)置為奇校驗(yàn),則當(dāng)接收方接收到數(shù)據(jù)時(shí),校驗(yàn)“1”的個(gè)數(shù)是否為奇數(shù),從而確定數(shù)據(jù)傳輸是否正確;若設(shè)置為偶校驗(yàn),則當(dāng)接收方接收到數(shù)據(jù)時(shí),校驗(yàn)“1”的個(gè)數(shù)是否為偶數(shù),從而確定數(shù)據(jù)傳輸是否正確;若設(shè)置為無校驗(yàn),則不對(duì)數(shù)據(jù)傳輸?shù)恼_性做判斷。6.1.2異步串行通信例:傳輸數(shù)據(jù)0x68(10000110),無奇偶校驗(yàn)。6.1.2異步串行通信2.波特率異步串行通信以1個(gè)字符為傳輸單位,傳輸多個(gè)字符的時(shí)間間隔是任意的,如傳輸0x68后何時(shí)再傳輸0x69是不受約束的。但一字符幀內(nèi)相鄰兩位的時(shí)間間隔是確定的,如傳輸0x68時(shí),D0位與D1位,D1位與D2位,D2位與D3位等的時(shí)間間隔是確定的,即傳輸速率是確定的,傳輸速率用波特率表示。6.1.2異步串行通信2.波特率波特率即每秒鐘傳輸二進(jìn)制信息的位數(shù),單位是為位/秒(bps或bit/s)。如每秒鐘傳輸240個(gè)字符,每個(gè)字符幀格式包含10位(1個(gè)起始位、1個(gè)停止位、8個(gè)數(shù)據(jù)位),則此時(shí)的波特率為:傳輸距離與波特率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使用每0.3m(約1英尺)有50pF電容的非平衡屏蔽雙絞線時(shí),傳輸距離隨波特率的增加而減小。當(dāng)波特率超過1000bps時(shí),最大傳輸距離迅速下降,如115200bps時(shí)最大距離下降到只有30m。10位×240個(gè)/秒=2400bps本節(jié)小結(jié)了解通信的分類及不同通信方式的區(qū)別;掌握異步串行通信的字符幀格式;掌握波特率定義及計(jì)算方法。USART的特點(diǎn)USART內(nèi)部電路結(jié)構(gòu)6.2STM32串口系統(tǒng)本節(jié)小結(jié)6.2.1USART的特點(diǎn)STM32L系列微控制器具有LPUART和USART兩類串口,STM32L431RCT6芯片具有1個(gè)LPUART和3個(gè)USART。LPUART和USART的主要區(qū)別是LPUART可以采用低速時(shí)鐘作為時(shí)鐘源,在休眠模式下可以正常接收數(shù)據(jù),喚醒系統(tǒng)。在使用上LPUART與UASRT沒有本質(zhì)區(qū)別。1.具有相互獨(dú)立的數(shù)據(jù)接收和數(shù)據(jù)發(fā)送引腳,全雙工通信;2.具有獨(dú)立的高精度波特率發(fā)生器,不占用定時(shí)/計(jì)數(shù)器;3.支持5、6、7、8和9位數(shù)據(jù)位,1或2位停止位的字符幀結(jié)構(gòu);6.2.1USART的特點(diǎn)4.具有三個(gè)完全獨(dú)立的中斷:TX發(fā)送完成中斷、TX發(fā)送數(shù)據(jù)寄存器空中斷、RX接收完成中斷;5.支持奇偶校驗(yàn);6.支持?jǐn)?shù)據(jù)溢出檢測(cè)和幀錯(cuò)誤檢測(cè);7.支持同步操作,可主機(jī)時(shí)鐘同步,也可從機(jī)時(shí)鐘同步;8.支持多機(jī)通信模式。6.2.2USART內(nèi)部電路結(jié)構(gòu)6.2.2USART內(nèi)部電路結(jié)構(gòu)1.引腳通過引腳接收數(shù)據(jù)輸入(RX)、發(fā)送數(shù)據(jù)輸出(TX)、發(fā)送允許(CTS)、發(fā)送請(qǐng)求(RTS)和發(fā)送器時(shí)鐘輸出(CK)等引腳與外部設(shè)備相連。6.2.2USART內(nèi)部電路結(jié)構(gòu)1.引腳RX通過采樣技術(shù)來區(qū)別數(shù)據(jù)和噪聲,從而恢復(fù)數(shù)據(jù)。當(dāng)發(fā)送器被禁止時(shí),TX引腳恢復(fù)到其IO端口配置。當(dāng)發(fā)送器被激活,并且不發(fā)送數(shù)據(jù)時(shí),TX引腳處于高電平。6.2.2USART內(nèi)部電路結(jié)構(gòu)1.引腳RTS和CTS為硬件數(shù)據(jù)流控制引腳,用于協(xié)調(diào)收發(fā)雙方,避免數(shù)據(jù)丟失。RTS的作用是通知對(duì)方自己是否可以接收數(shù)據(jù),有效電平為低電平。CTS用于判斷對(duì)方是否可以接收數(shù)據(jù),低電平有效。6.2.2USART內(nèi)部電路結(jié)構(gòu)1.引腳CK為發(fā)送器時(shí)鐘輸出,用于同步傳輸?shù)臅r(shí)鐘,數(shù)據(jù)可以在RX上同步被接收,這可以用來控制帶有移位寄存器的外部設(shè)備(例如LCD驅(qū)動(dòng)器)。時(shí)鐘相位和極性都是軟件可編程的。在智能卡模式里,CK可以為智能卡提供時(shí)鐘。6.2.2USART內(nèi)部電路結(jié)構(gòu)2.收發(fā)過程6.2.2USART內(nèi)部電路結(jié)構(gòu)2.收發(fā)過程0X33001100110011001100110011110011000100011001110011001100110011001100110X33本節(jié)小結(jié)1.了解USART特點(diǎn);2.掌握USART收發(fā)過程。USART應(yīng)用實(shí)例1——串口打印USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控6.3應(yīng)用實(shí)例本節(jié)小結(jié)6.3.1USART應(yīng)用實(shí)例1——串口打印1.電路原理及需求分析串口打印信息即利用STM32的串口,結(jié)合借助串口調(diào)試助手,輸出一段有用信息。在程序指定位置打印信息可以直觀地觀察程序運(yùn)行狀態(tài),判斷程序運(yùn)行結(jié)果與預(yù)期邏輯是否一致,是一種簡(jiǎn)單易用的調(diào)試方法。因此,在硬件設(shè)計(jì)時(shí)通常預(yù)留USART1用于串口打印信息,以進(jìn)行調(diào)試。由于PC串口和STM32串口通信電平不一致,通常采用PL2302、PL2303、CH340等芯片進(jìn)行USB和串口轉(zhuǎn)換,本書所用開發(fā)板采用CH342F芯片實(shí)現(xiàn)USB轉(zhuǎn)串口。1.電路原理及需求分析CH342F是南京沁恒微電子股份有限公司生產(chǎn)的USB總線轉(zhuǎn)換芯片,能夠?qū)崿F(xiàn)USB轉(zhuǎn)2個(gè)異步串口,每個(gè)串口都支持高速全雙工通信,波特率范圍50bps~3Mbps,內(nèi)置時(shí)鐘,無需外部晶振,支持DC3.3V和DC5V供電,具體細(xì)節(jié)可參考官方產(chǎn)品手冊(cè)。6.3.1USART應(yīng)用實(shí)例1——串口打印1.電路原理及需求分析6.3.1USART應(yīng)用實(shí)例1——串口打印1.電路原理及需求分析(1)LED1(PA0)用于指示系統(tǒng)工作狀態(tài),上電或復(fù)位后,系統(tǒng)進(jìn)行初始化,初始化完成后,LED1先以0.5s的間隔閃爍3次,隨后打印“SystemInitOK!”,然后進(jìn)入正常運(yùn)行狀態(tài),LED1間隔1s閃爍,同時(shí)根據(jù)LED1狀態(tài)打印“LED1On”(亮)或“LED1Off”(滅)。(2)按鍵K1和K2采用外部中斷方式,分別控制LED2和LED3,每按一次按鍵,LED狀態(tài)發(fā)生一次改變,同時(shí)根據(jù)LED狀態(tài)打印“LEDOn”或“LEDOff”。6.3.1USART應(yīng)用實(shí)例1——串口打印2.實(shí)現(xiàn)過程本實(shí)例在“TIM應(yīng)用實(shí)例1——精確定時(shí)”基礎(chǔ)上完善功能,主要包括兩部分內(nèi)容:首先,實(shí)現(xiàn)按鍵K1和K2通過外部中斷方式控制LED2和LED3的亮滅;然后,增加串口打印功能,具體實(shí)現(xiàn)方法包括串口配置、編程實(shí)現(xiàn)功能、編譯下載程序等步驟。6.3.1USART應(yīng)用實(shí)例1——串口打印2.實(shí)現(xiàn)過程——串口配置采用USART1實(shí)現(xiàn)信息打印,USART1配置方式:選中USART1->配置模式(Mode)選擇異步模式“Asynchronous”。其它參數(shù)保持默認(rèn)(1起始位,8數(shù)據(jù)位,1停止位,無奇偶校驗(yàn),波特率115200)即可。6.3.1USART應(yīng)用實(shí)例1——串口打印2.實(shí)現(xiàn)過程——編程實(shí)現(xiàn)(1)串口重定向“printf”函數(shù)為C語言標(biāo)準(zhǔn)輸出函數(shù),需包含頭文件“stdio.h”,由于標(biāo)準(zhǔn)C語言中的“printf”函數(shù)輸出到屏幕上,顯需要用到串口,因此需重定向,即將利用串口實(shí)現(xiàn)printf輸出。包含頭文件程序添加在/*USERCODEBEGINIncludes*/和/*
USERCODEENDIncludes*/之間,重定向程序添加至/*USERCODEBEGIN0*/和/*USERCODEEND0*/之間。6.3.1USART應(yīng)用實(shí)例1——串口打印2.實(shí)現(xiàn)過程——編程實(shí)現(xiàn)(1)串口重定向main.c/*Privateincludes*//*USERCODEBEGINIncludes*/#include"stdio.h"http://標(biāo)準(zhǔn)輸入輸出,printf函數(shù)需要包含該頭文件。/*USERCODEENDIncludes*/
/*USERCODEBEGIN0*//*串口重定向,需要將printf函數(shù)重定向至串口,可百度搜索相關(guān)程序*/#ifdef__GNUC__#definePUTCHAR_PROTOTYPEint__io_putchar(intch)#else#definePUTCHAR_PROTOTYPEintfputc(intch,FILE*f)#endif
PUTCHAR_PROTOTYPE{//具體哪個(gè)串口可以更改huart1為其它串口HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xffff);returnch;}/*USERCODEEND0*/6.3.1USART應(yīng)用實(shí)例1——串口打印2.實(shí)現(xiàn)過程——編程實(shí)現(xiàn)(2)打印“SystemInitOK!”main.c/*1.LED1先以0.5s的間隔閃爍3次*/for(inti=0;i<6;i++){ HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);//電平翻轉(zhuǎn) HAL_Delay(500);}
printf("SystemOK!\n");//打印SystemInitOK!6.3.1USART應(yīng)用實(shí)例1——串口打印2.實(shí)現(xiàn)過程——編程實(shí)現(xiàn)(3)打印LED1狀態(tài)main.c/*定時(shí)器回調(diào)函函數(shù)*/voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){ if(htim->Instance==TIM6)//判斷是否為TIM6 { /*1.正常運(yùn)行LED1間隔1s閃爍*/ HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); /*亮打印LED1On,滅打印LED1Off,需判斷*/ if(HAL_GPIO_ReadPin(LED1_GPIO_Port,LED1_Pin)==GPIO_PIN_RESET) { printf("LED1On!\n");//\n表示換行 } else { printf("LED1Off!\n");//\n表示換行 } }}6.3.1USART應(yīng)用實(shí)例1——串口打印2.實(shí)現(xiàn)過程——編程實(shí)現(xiàn)(4)打印LED2和LED3狀態(tài)main.c/*EXTI回調(diào)函數(shù)*/voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin){ if(GPIO_Pin==K1_Pin)//判斷是否為K1 { HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin); } if(HAL_GPIO_ReadPin(LED2_GPIO_Port,LED2_Pin)==GPIO_PIN_RESET)//亮 { printf("LED2On!\n");//\n表示換行 } else { printf("LED2Off!\n");//\n表示換行 } if(GPIO_Pin==K2_Pin)//判斷是否為K1 { HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin); } /*亮打印LED1On,滅打印LED1Off,需判斷*/ if(HAL_GPIO_ReadPin(LED3_GPIO_Port,LED3_Pin)==GPIO_PIN_RESET)//亮 { printf("LED3On!\n");//\n表示換行 } else { printf("LED3Off!\n");//\n表示換行 }}6.3.1USART應(yīng)用實(shí)例1——串口打印6.3.2USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控1.電路原理及需求分析1.電路原理及需求分析(1)LED1用于指示系統(tǒng)工作狀態(tài),上電或復(fù)位后,系統(tǒng)進(jìn)行初始化,初始化完成后LED1間隔0.5s閃爍3次,隨后進(jìn)入正常運(yùn)行狀態(tài),LED1間隔1s閃爍。(2)按鍵K1和K2通過外部中斷的方式控制LED2和LED3的狀態(tài),按下時(shí)對(duì)應(yīng)LED亮,松開時(shí)對(duì)應(yīng)LED滅。(3)通過USART1將LED2、LED3、K1和K2狀態(tài)信息發(fā)送至串口調(diào)試助手,發(fā)送時(shí)間間隔為2s。(4)利用串口調(diào)試助手發(fā)送控制指令,實(shí)現(xiàn)LED2和LED3的開關(guān)控制。6.3.2USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控2.實(shí)現(xiàn)過程(1)程序流程6.3.2USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控2.實(shí)現(xiàn)過程(1)程序流程6.3.2USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控2.實(shí)現(xiàn)過程(1)程序流程1)外設(shè)初始化:系統(tǒng)上電或復(fù)位后,初始化外設(shè),包括GPIO、EXTI、TIM和USART,相應(yīng)初始化程序由STM32CubeIDE生成。6.3.2USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控2.實(shí)現(xiàn)過程(1)程序流程2)通信協(xié)議初始化:MCU發(fā)送狀態(tài)信息包括LED2、LED3、K1和K2的狀態(tài),數(shù)據(jù)采用十六進(jìn)制打包發(fā)送,MCU發(fā)送數(shù)據(jù)協(xié)議如表所列,初始化協(xié)議為:4841495400000000000000。協(xié)議頭(4字節(jié))設(shè)備ID(1字節(jié))LED2狀態(tài)(1字節(jié))LED3狀態(tài)(1字節(jié))K1狀態(tài)(1字節(jié))K2狀態(tài)(1字節(jié))保留(2字節(jié))48414954(HAIT)0000(滅)01(亮)00(滅)01(亮)00(斷開)01(閉合)00(斷開)01(閉合)0000
PC端采用十六進(jìn)制打包發(fā)送控制指令,MCU接收數(shù)據(jù)協(xié)議如表所列,由MCU進(jìn)行指令解析,無需初始化。協(xié)議頭(4字節(jié))設(shè)備ID(1字節(jié))K1狀態(tài)(1字節(jié))K2狀態(tài)(1字節(jié))保留(2字節(jié))48414954(HAIT)0000(斷開)01(閉合)00(斷開)01(閉合)00006.3.2USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控3.實(shí)現(xiàn)步驟(1)初始化配置GPIO配置EXTI配置6.3.2USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控3.實(shí)現(xiàn)步驟(1)初始化配置TIM配置6.3.2USART應(yīng)用實(shí)例2——開關(guān)量遠(yuǎn)程監(jiān)控3.實(shí)現(xiàn)步驟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公場(chǎng)地租賃合同書范本
- 土地回購協(xié)議合同范本
- 卡車拖車出售合同范例
- 合作創(chuàng)業(yè)干股合同書
- 界址點(diǎn)坐標(biāo)合同7篇
- 渠道分銷商合作合同條款
- 養(yǎng)豬新技術(shù)入股合同范例
- 2025年母嬰之家連鎖店加盟合同6篇
- 員工社保補(bǔ)償合同范本
- 品牌產(chǎn)品特許經(jīng)營合同范本
- 心衰4級(jí)病人護(hù)理常規(guī)
- 《合同法違約責(zé)任》課件
- 2024建筑消防設(shè)施維護(hù)保養(yǎng)技術(shù)規(guī)范
- 醫(yī)院裝修改造項(xiàng)目投標(biāo)方案(技術(shù)標(biāo))
- 【歷年真題】2018年4月00040法學(xué)概論自考試卷(含答案)
- 個(gè)人項(xiàng)目投資合作協(xié)議書范本
- 新媒體營銷全套教學(xué)教案
- 廚房設(shè)備備品備件、易損件明細(xì)
- 社會(huì)科學(xué)基礎(chǔ)(高職學(xué)前教育專業(yè))PPT完整全套教學(xué)課件
- 藥物治療學(xué)-藥物治療的一般原則課件
- 人教版PEP五年級(jí)下冊(cè)英語unit1單元復(fù)習(xí)課件
評(píng)論
0/150
提交評(píng)論