STM32應(yīng)用技術(shù)項(xiàng)目式教程 課件全套 劉旭東 專題1-7 認(rèn)識STM32和嵌入式系統(tǒng) -STM32綜合項(xiàng)目設(shè)計(jì)_第1頁
STM32應(yīng)用技術(shù)項(xiàng)目式教程 課件全套 劉旭東 專題1-7 認(rèn)識STM32和嵌入式系統(tǒng) -STM32綜合項(xiàng)目設(shè)計(jì)_第2頁
STM32應(yīng)用技術(shù)項(xiàng)目式教程 課件全套 劉旭東 專題1-7 認(rèn)識STM32和嵌入式系統(tǒng) -STM32綜合項(xiàng)目設(shè)計(jì)_第3頁
STM32應(yīng)用技術(shù)項(xiàng)目式教程 課件全套 劉旭東 專題1-7 認(rèn)識STM32和嵌入式系統(tǒng) -STM32綜合項(xiàng)目設(shè)計(jì)_第4頁
STM32應(yīng)用技術(shù)項(xiàng)目式教程 課件全套 劉旭東 專題1-7 認(rèn)識STM32和嵌入式系統(tǒng) -STM32綜合項(xiàng)目設(shè)計(jì)_第5頁
已閱讀5頁,還剩407頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

專題一

認(rèn)識STM32和嵌入式系統(tǒng)《嵌入式系統(tǒng)開發(fā)》目錄一、嵌入式系統(tǒng)概念二、嵌入式處理器三、嵌入式系統(tǒng)應(yīng)用四、STM32系列處理器1.1.1 嵌入式系統(tǒng)的定義一般定義– 以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗和應(yīng)用環(huán)境有特殊要求的專用計(jì)算機(jī)系統(tǒng)。是將應(yīng)用程序、操作系統(tǒng)和計(jì)算機(jī)硬件集成在一起的系統(tǒng)(技術(shù)角度)嵌入式系統(tǒng)是設(shè)計(jì)完成復(fù)雜功能的硬件和軟件,并使其緊密耦合在一起的計(jì)算機(jī)系統(tǒng)。(系統(tǒng)角度)術(shù)語嵌入式反映了這些系統(tǒng)通常是更大系統(tǒng)(被稱之為嵌入的系統(tǒng))的一個(gè)完整子系統(tǒng)。嵌入式的系統(tǒng)可以包含多個(gè)嵌入式系統(tǒng)。廣義定義任何一個(gè)非計(jì)算機(jī)的計(jì)算系統(tǒng)IEEE國際電氣工程師學(xué)會定義嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作的機(jī)器、設(shè)備或裝置”(原文為devices

usedto control, monitor, or assist theoperation of equipment, machinery orplants)。通常執(zhí)行特定功能嵌入式系統(tǒng)的核心----嵌入式微處理器嚴(yán)格的時(shí)序和穩(wěn)定性要求全自動操作循環(huán)1.1.2 嵌入式系統(tǒng)的組成嵌入式系統(tǒng)通常由嵌入式處理器、外圍設(shè)備、嵌入式操作系統(tǒng)和應(yīng)用軟件等幾大部分組成。嵌入式系統(tǒng)組成嵌入式系統(tǒng)硬件組成嵌入式處理器嵌入式處理器是嵌入式系統(tǒng)的核心部件。嵌入式處理器與通用處理器的最大不同點(diǎn)在于嵌入式處理器大多工作在為特定用戶群設(shè)計(jì)的系統(tǒng)中。它通常把通用計(jì)算機(jī)中許多由板卡完成的任務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設(shè)計(jì)趨于小型化,并具有高效率、高可靠性等特征。大的硬件廠商會推出自己的嵌入式處理器,因而現(xiàn)今市面上有1000多種嵌入式處理器芯片,其中使用最為廣泛的有ARM,MIPS,PowerPC,MC68000等。外圍設(shè)備外圍設(shè)備是指在一個(gè)嵌入式系統(tǒng)中,除了嵌入式處理器以外的完成存儲、通信、調(diào)試、顯示等輔助功能的其他部件。根據(jù)外圍設(shè)備的功能可分為以下3類:存儲器:靜態(tài)易失型存儲器(RAM,SRAM)、動態(tài)存儲器(DRAM)和非易失型存儲器(Flash)。其中,F(xiàn)lash以可擦寫次數(shù)多、存儲速度快、容量大及價(jià)格低等優(yōu)點(diǎn)在嵌入式領(lǐng)域得到了廣泛的應(yīng)用。接口:應(yīng)用最為廣泛的包括并口、RS-232串口、IrDA紅外接口、SPI串行外圍設(shè)備接口、I2C(Inter

IC)總線接口、USB通用串行總線接口、Ethernet網(wǎng)口等。人機(jī)交互:LCD、鍵盤和觸摸屏等人機(jī)交互設(shè)備。嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)是用來管理存儲器分配、中斷處理、任務(wù)間通信和定時(shí)器響應(yīng),以及提供多任務(wù)處理等的軟件模塊集合。嵌入式操作系統(tǒng)常常有實(shí)時(shí)要求,所以嵌入式操作系統(tǒng)往往又是“實(shí)時(shí)操作系統(tǒng)”。應(yīng)用軟件嵌入式系統(tǒng)的應(yīng)用軟件是針對特定的實(shí)際專業(yè)領(lǐng)域的,基于相應(yīng)的嵌入式硬件平臺,并能完成用戶預(yù)期任務(wù)的計(jì)算機(jī)軟件。嵌入式軟件的特點(diǎn)如下:(1)軟件要求固態(tài)化存儲。(2)軟件代碼要求高質(zhì)量、高可靠性。(3)系統(tǒng)軟件的高實(shí)時(shí)性是基本要求。(4)多任務(wù)實(shí)時(shí)操作系統(tǒng)成為嵌入式應(yīng)用軟件的必需。1.1.3 嵌入式系統(tǒng)的特點(diǎn)軟硬件一體化,集計(jì)算機(jī)技術(shù)、微電子技術(shù)、行業(yè)技術(shù)為一體;需要操作系統(tǒng)支持,代碼小、執(zhí)行速度快;專用緊湊,用途固定,成本敏感;可靠性要求高;多樣性,應(yīng)用廣泛、種類繁多。1.1.4 嵌入式系統(tǒng)的應(yīng)用嵌入式應(yīng)用信息家電智能玩具通信設(shè)備移動存貯工控設(shè)備智能儀表汽車電子網(wǎng)絡(luò)設(shè)備消費(fèi)電子軍事國防軍事電子電子商務(wù)工業(yè)控制1.1.5 實(shí)時(shí)系統(tǒng)實(shí)時(shí)系統(tǒng)(Real

Time

System)是指產(chǎn)生系統(tǒng)輸出的時(shí)間對系統(tǒng)至關(guān)重要的系統(tǒng)。從輸入到輸出的滯后時(shí)間必須足夠小到一個(gè)可以接受的時(shí)限內(nèi)。實(shí)時(shí)系統(tǒng)通常具備以下重要的特性:1.實(shí)時(shí)性2.并行性3.多路性4.獨(dú)立性5.可預(yù)測性6.可靠性概念特性實(shí)時(shí)系統(tǒng)中主要通過3個(gè)指標(biāo)來衡量系統(tǒng)的實(shí)時(shí)性,即:響應(yīng)時(shí)間(Response

Time):指計(jì)算機(jī)從識別一個(gè)外部事件到做出響應(yīng)的時(shí)間。生存時(shí)間(Survival

Time):指數(shù)據(jù)的有效等待時(shí)間,在這段時(shí)間里數(shù)據(jù)是有效的。吞吐量(Throughput):指在一段給定時(shí)間內(nèi),系統(tǒng)可以處理事件的總數(shù)。吞吐量通常比平均響應(yīng)時(shí)間的倒數(shù)小一點(diǎn)。衡量實(shí)時(shí)性的指標(biāo)實(shí)時(shí)系統(tǒng)的分類根據(jù)響應(yīng)時(shí)間可分為3種類型:1.強(qiáng)實(shí)時(shí)系統(tǒng)2.弱實(shí)時(shí)系統(tǒng)3.一般實(shí)時(shí)系統(tǒng)根據(jù)確定性可分為2種類型:1.硬實(shí)時(shí)系統(tǒng)2.軟實(shí)時(shí)系統(tǒng)二、嵌入式處理器單片機(jī)就是單片微型計(jì)算機(jī)(SCM,SingleChip

Microcomputer)微控制器(Micro-Controller

Unit——MCU)運(yùn)算器輸出設(shè)備控制器存儲器輸入設(shè)備微型計(jì)算機(jī)系統(tǒng)的硬件部分通常由五部分組成:二、嵌入式處理器個(gè)人計(jì)算機(jī)系統(tǒng)通常由多塊印刷電路板制成:主板計(jì)算機(jī)內(nèi)存條CPU二、嵌入式處理器從單片機(jī)到嵌入式(1)結(jié)構(gòu)升級單片機(jī)系統(tǒng)基本結(jié)構(gòu):單片機(jī)由運(yùn)算器、控制器、存儲器、輸入輸出設(shè)備構(gòu)成。嵌入式系統(tǒng)結(jié)構(gòu):嵌入式系統(tǒng)一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)、特定的應(yīng)用程序組成。嵌入式系統(tǒng)設(shè)計(jì)的第一步是結(jié)合具體的應(yīng)用,綜合考慮系統(tǒng)對成本、性能、可擴(kuò)展性、開發(fā)周期等各個(gè)方面的要求,確定系統(tǒng)的主控器件,并以之為核心搭建系統(tǒng)硬件平臺。二、嵌入式處理器從單片機(jī)到嵌入式(2)軟硬件升級單片機(jī)是在一塊集成電路芯片中包含了微控制器電路,以及一些通用的輸入輸出接口器件。從構(gòu)成嵌入式系統(tǒng)的方式看,根據(jù)現(xiàn)代電子技術(shù)發(fā)展水平,嵌入式系統(tǒng)可以用單片機(jī)實(shí)現(xiàn),也可以用其它可編程的電子器件實(shí)現(xiàn)。其余硬件器件根據(jù)目標(biāo)應(yīng)用系統(tǒng)的需求而定。制造商出廠的通用單片機(jī)內(nèi)沒有應(yīng)用程序,所以不能直接運(yùn)行。增加應(yīng)用程序后,單片機(jī)就可以獨(dú)立運(yùn)行。嵌入式系統(tǒng)一定要有控制軟件,實(shí)現(xiàn)控制邏輯的方式可以完全用硬件電路,也可以用軟件程序。二、嵌入式處理器從單片機(jī)到嵌入式(3)應(yīng)用升級單片機(jī)現(xiàn)在已經(jīng)被認(rèn)為是通用的電子器件了,單片機(jī)自身為主體。嵌入式系統(tǒng)在物理結(jié)構(gòu)關(guān)系上是從屬的,嵌入式系統(tǒng)被嵌入安裝在目標(biāo)應(yīng)用系統(tǒng)內(nèi)。嵌入式系統(tǒng)在控制關(guān)系上卻是主導(dǎo)的,是控制目標(biāo)應(yīng)用系統(tǒng)運(yùn)行的邏輯處理系統(tǒng)。盡管可以用不同方式構(gòu)成嵌入式系統(tǒng),但是一旦構(gòu)成之后,嵌入式系統(tǒng)就是一個(gè)專用系統(tǒng)。專用系統(tǒng)中,可編程器件的軟件可以在系統(tǒng)構(gòu)建過程中植入,也可以在器件制造過程中直接生成,以降低制造成本??刂七壿嫃?fù)雜的單片機(jī)會需要操作系統(tǒng)軟件支持;控制邏輯簡單的嵌入式系統(tǒng)也可以不用操作系統(tǒng)軟件支持。二、嵌入式處理器從單片機(jī)到嵌入式通俗點(diǎn)說,以車載導(dǎo)航系統(tǒng)為例,就是一個(gè)典型的嵌入式系統(tǒng),它服務(wù)于整車的控制系統(tǒng),留有豐富的接口與行車電腦等設(shè)備進(jìn)行通信,基于嵌入式系統(tǒng)它具備強(qiáng)大的數(shù)據(jù)處理能力和存儲能力。由于具有明確的應(yīng)用目的,所以車載導(dǎo)航在生產(chǎn)過程中在硬件上可以進(jìn)行一定程度的“定制”,也就是所謂的“可裁剪性”,同時(shí)在后期使用中也可以提供給用戶新的固件進(jìn)行“軟件升級”。而這些特性是傳統(tǒng)單片機(jī)系統(tǒng)尤其是8位機(jī)系統(tǒng)從硬件規(guī)格到系統(tǒng)構(gòu)架都不具備的。三、嵌入式系統(tǒng)應(yīng)用用場合應(yīng)用:嵌入式系統(tǒng)能做什么?單片機(jī)無所不能!所謂“微電腦控制”場合的核心就是單片機(jī)定時(shí)?完成涵洗蓋衣、日脫常水生等功活、工業(yè)生產(chǎn)、軍事設(shè)備、科研儀表儀器等所有智能化應(yīng)能蒸汽熨燙的功能刷卡、投幣洗衣可以判斷衣服的干凈程度,實(shí)現(xiàn)“洗凈即?!钡墓δ躄ED發(fā)光二極管構(gòu)成顯示屏的像素點(diǎn)單片機(jī)負(fù)責(zé)逐點(diǎn)或逐行掃描,并與電腦通信獲取圖片信息巡線避障電視機(jī)遙控器遙控LCD顯示用于環(huán)境監(jiān)測、工礦企業(yè)、科學(xué)研究、水產(chǎn)養(yǎng)殖場等場合的pH值的測定讀取pH傳感器的模擬信號,內(nèi)部處理后顯示在LCD上四、STM32處理器四、STM32處理器(選自百度百科)STM32系列專為要求高性能、低成本、低功耗的嵌入式應(yīng)用設(shè)計(jì)的ARM

Cortex?-M0,M0+,M3,

M4和M7內(nèi)核。按內(nèi)核架構(gòu)分為不同產(chǎn)品:

主流產(chǎn)品(STM32F0、STM32F1、STM32F3)、超低功耗產(chǎn)品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能產(chǎn)品(STM32F2、STM32F4、STM32F7、STM32H7)四、STM32處理器四、STM32處理器(選自百度百科)在STM32F105和STM32F107互連型系列微控制器之前,意法半導(dǎo)體已經(jīng)推出STM32基本型系列、增強(qiáng)型系列、USB基本型系列、互補(bǔ)型系列;新系列產(chǎn)品沿用增強(qiáng)型系列的72MHz處理頻率。內(nèi)存包括64KB到256KB閃存和

20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三種封裝,不同的封裝保持引腳排列一致性,結(jié)合STM32平臺的設(shè)計(jì)理念,開發(fā)人員通過選擇產(chǎn)品可重新優(yōu)化功能、存儲器、性能和引腳數(shù)量,以最小的硬件變化來滿足個(gè)性化的應(yīng)用需求。截至2010年7月1日,市面流通的型號有:基本型:STM32F101R6、STM32F101C8、STM32F101R8、STM32F101V8、STM32F101RB、STM32F101VB增強(qiáng)型:STM32F103C8、STM32F103R8、STM32F103V8、STM32F103RB、STM32F103VB、

STM32F103VE、STM32F103ZESTM32型號的說明:以STM32F103RBT6這個(gè)型號的芯片為例,該型號的組成為7個(gè)部分,其命名規(guī)則如下:四、STM32單片機(jī)四、STM32處理器(選自百度百科)STM32型號的說明:以STM32F103RBT6這個(gè)型號的芯片為例,該型號的組成為7個(gè)部分,其命名規(guī)則如下:1STM32STM32代表ARM

Cortex-M內(nèi)核的32位微控制器。2FF代表芯片子系列。3103103代表增強(qiáng)型系列。4RR這一項(xiàng)代表引腳數(shù),其中T代表36腳,C代表48腳,R代表64腳,V代表100腳,Z代表144腳,I代表176腳。5BB這一項(xiàng)代表內(nèi)嵌Flash容量,其中6代表32K字節(jié)Flash,8代表64K字節(jié)Flash,B代表128K字節(jié)Flash,C代表256K字節(jié)Flash,D代表384K字節(jié)Flash,E代表512K字節(jié)Flash,G代表1M字節(jié)Flash。6TT這一項(xiàng)代表封裝,其中H代表BGA封裝,T代表LQFP封裝,U代表VFQFPN封裝。766這一項(xiàng)代表工作溫度范圍,其中6代表-40——85℃,7代表-40——105℃。四、STM32單片機(jī)四、STM32處理器(選自百度百科)STM32單片機(jī)優(yōu)點(diǎn):四、STM32單片機(jī)四、STM32處理器(選自百度百科)STM32項(xiàng)目一

編譯環(huán)境的搭建項(xiàng)目一

編譯環(huán)境的搭建STM32任務(wù)

新建一個(gè)基于STM32固件庫的工程模板目標(biāo)建立一個(gè)基于V3.5版本固件庫的Keil

μVision4工程模板,這樣就方便以后每次在新建工程時(shí),可以直接復(fù)制使用。KeilμVision4版本Keil μVision4源自德國的KEIL公司,

Keil μVision4集成了業(yè)內(nèi)最領(lǐng)先的技術(shù),包括μVision4集成開發(fā)環(huán)境與RealView編譯器。支持ARM7、ARM9和最新的Cortex-M3核處理器,自動配置啟動代碼,集成Flash燒寫模塊,強(qiáng)大的Simulation設(shè)備模擬,性能分析等功能。項(xiàng)目一

編譯環(huán)境的搭建任務(wù)1 新建一個(gè)基于STM32固件庫的工程模板新建工程模板目錄主要介紹怎樣建立基于V3.5版本固件庫的工程模板目錄,這樣就方便以后每次在新建工程時(shí),可以直接復(fù)制使用。新建工程模板的具體步驟,參考pdf文件。startup_stm32f10x_ld.s(小容量)、

startup_stm32f10x_md.s(中容量)、

startup_stm32f10x_hd.s(大容量)的啟動文件。新建Keil

μVision4工程模板在建立工程之前,

先在電腦的某個(gè)目錄下,

新建一個(gè)子目錄“STM32_Project工程模板”。然后把工程目錄模板“STM32_Project”復(fù)制到“STM32_Project工程模板”子目錄里面。新建Keil

μVision4工程模板的具體步驟,參考pdf文件。STM32項(xiàng)目一

編譯環(huán)境的搭建STM32任務(wù)1 新建一個(gè)基于STM32固件庫的工程模板新建組和添加文件到STM32_

Project工程模板建好STM32_

Project工程后,還要新建USER、CORE、OBJ和STM32F10x_FWLib四個(gè)組,并添加文件到相應(yīng)組中。新建組和添加文件到工程模板的具體步驟,參考pdf文件。把所有外設(shè)的庫文件都添加進(jìn)來了,為后面使用方便,不用每次添加,這樣做的壞處就是工程太大,編譯起來速度慢。工程配置與編譯到此為止,新建的基于STM32的Keil μVision4工程就已經(jīng)基本完成了。接下來就要進(jìn)行工程配置和編譯了。工程配置與編譯的具體步驟,參考pdf文件。項(xiàng)目一

編譯環(huán)境的搭建STM32STM32固件庫認(rèn)識STM32固件庫意法半導(dǎo)體公司(ST公司)為了方便用戶開發(fā)程序,提供了一套豐富的

STM32

固件庫。什么是固件庫呢?在STM32應(yīng)用程序開發(fā)中,固件庫與寄存器有什么區(qū)別和聯(lián)系呢?STM32固件庫與CMSIS標(biāo)準(zhǔn)STM32固件庫就是函數(shù)的集合,固件庫函數(shù)的作用是向下負(fù)責(zé)與寄存器直接打交道,向上提供用戶函數(shù)調(diào)用的接口(API)。那么對這些函數(shù)有什么要求呢?這就要涉及到一個(gè)CMSIS標(biāo)準(zhǔn)的基礎(chǔ)知識。項(xiàng)目一

編譯環(huán)境的搭建STM32STM32固件庫關(guān)鍵子目錄和文件STM32固件庫是不斷完善升級的,有不同的版本?,F(xiàn)使用的是3.5版本的固件庫,是目前最新版本。STM32固件庫的目錄結(jié)構(gòu),如下圖所示。項(xiàng)目一

編譯環(huán)境的搭建STM32固件庫關(guān)鍵子目錄和文件STM32固件庫關(guān)鍵子目錄STM32固件庫關(guān)鍵子目錄主要有Libraries和Project子目錄① Libraries子目錄有CMSIS和STM32F10x_StdPeriph_Driver這2個(gè)子目錄,包含了固件庫核心的所有子文件夾和文件,主要包含大量的頭文件、源文件和系統(tǒng)文件,是開發(fā)必須使用的。CMSIS子目錄存放的是啟動文件;STM32F10x_StdPeriph_Driver子目錄存放的是STM32固件庫源碼文件。inc子目錄存放的是stm32f10x_xxx.h頭文件,無需改動;src子目錄存放的是stm32f10x_xxx.c固件庫源碼文件。每一個(gè)“.c”文件和一個(gè)相應(yīng)的“.h”文件對應(yīng),這里的文件也是固件庫的核心文件,每個(gè)外設(shè)對應(yīng)一組文件。STM32項(xiàng)目一

編譯環(huán)境的搭建STM32STM32固件庫關(guān)鍵子目錄和文件STM32固件庫關(guān)鍵子目錄② Project

子目錄里面有STM32F10x_StdPeriph_Examples

和STM32F10x_StdPeriph_Template子目錄。STM32F10x_StdPeriph_Examples子目錄存放的是ST官方提供的固件實(shí)例源碼,包含了幾乎所有STM32F10x外設(shè)的使用詳細(xì)源代碼。在以后的開發(fā)過程中,可以參考修改這個(gè)官方提供的實(shí)例,來快速驅(qū)動自己的外設(shè)。很多開發(fā)板的實(shí)例,也都參考了官方提供的例程源碼,這些源碼對以后的學(xué)習(xí)非常重要。STM32F10x_StdPeriph_Template子目錄存放的是工程模板。項(xiàng)目一

編譯環(huán)境的搭建STM32STM32固件庫關(guān)鍵子目錄和文件STM32固件庫關(guān)鍵文件著重介紹STM32固件庫Libraries子目錄下的幾個(gè)重要文件。① core_cm3.c和core_cm3.h中2個(gè)文件是位于\Libraries\CMSIS\CM3\CoreSupport子目錄下面的,分別是內(nèi)核訪問層的源文件和頭文件,提供進(jìn)入M3內(nèi)核接口。是由ARM公司提供的CMSIS核心文件,對所有CM3內(nèi)核的芯片都一樣,永遠(yuǎn)都不需要修改這個(gè)文件。項(xiàng)目一

編譯環(huán)境的搭建STM32固件庫關(guān)鍵子目錄和文件STM32固件庫關(guān)鍵文件② STM32F10x

子目錄中的3

個(gè)文件:

system_stm32f10x.c

、system_stm32f10x.h以及stm32f10x.h文件,是外設(shè)訪問層的源文件和頭文件。system_stm32f10x.c文件和對應(yīng)的system_stm32f10x.h頭文件是設(shè)置系統(tǒng)以及總線時(shí)鐘。這里面有一個(gè)非常重要的SystemInit()函數(shù),這個(gè)函數(shù)在系統(tǒng)啟動時(shí)都會調(diào)用,用來設(shè)置系統(tǒng)的整個(gè)時(shí)鐘系統(tǒng)。這也就是不需要用戶去配置時(shí)鐘,程序就能運(yùn)行的原因。stm32f10x.h頭文件相當(dāng)重要,主要包含了STM32F10x系列所有外設(shè)寄存器的定義、位定義、中斷向量表、存儲空間的地址映射等。只要做STM32開發(fā),就要查看這個(gè)文件相關(guān)的定義。打開這個(gè)文件就可以看到,里面有非常多的結(jié)構(gòu)體以及宏定義。STM32項(xiàng)目一

編譯環(huán)境的搭建STM32固件庫關(guān)鍵子目錄和文件STM32固件庫關(guān)鍵文件③ 啟動文件在STM32F10x子目錄下面還有一個(gè)startup子目錄,這個(gè)子目錄里面放8個(gè)啟動文件,是以startup開頭的“.s”文件。不同容量(容量是指FLASH的大?。┑男酒?,其啟動文件也不一樣。在stm32f

103系列芯片中,主要使用其中3個(gè)啟動文件。startup_stm32f10x_ld.s:小容量產(chǎn)品,F(xiàn)LASH

32KB;startup_stm32f10x_md.s:中等容量產(chǎn)品,64KB

FLASH

128KB;startup_stm32f10x_hd.s:大容量產(chǎn)品,256KB

FLASH。若采用STM32F103R6芯片,其容量FLASH是32K,是屬于小容量產(chǎn)品,可選擇startup_stm32f10x_ld.s啟動文件。那么,啟動文件到底有什么作用呢?啟動文件主要是進(jìn)行堆棧之類的初始化、中斷向量表以及中斷函數(shù)定義,還要引導(dǎo)進(jìn)入main函數(shù)。STM32項(xiàng)目一

編譯環(huán)境的搭建STM32STM32固件庫關(guān)鍵子目錄和文件STM32固件庫關(guān)鍵文件④ STM32F10x_StdPeriph_Template子目錄下有3個(gè)關(guān)鍵文件:stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h。stm32f10x_it.c和stm32f10x_it.h是外設(shè)中斷函數(shù)文件,是用來編寫中斷服務(wù)函數(shù),用戶可以相應(yīng)的加入自己的中斷程序代碼。stm32f10x_conf.h是固件庫配置文件,有很多#include。在建立工程時(shí),可以注釋掉一些不用的外設(shè)頭文件,來選擇固件庫所使用的外設(shè)。項(xiàng)目一

編譯環(huán)境的搭建STM32Keil配置下面我們將這些文件加入我們的工程中去。右鍵點(diǎn)擊

Target1,選擇

ManageProject

Items。項(xiàng)目一

編譯環(huán)境的搭建STM32Keil配置Project

Targets

一欄,我們將

Target

名字修改為

Template,然后在

Groups一欄刪掉一個(gè)

SourceGroup1,建立三個(gè)

Groups:USER,CORE,FWLIB。然后點(diǎn)擊

OK,可以看到我們的

Target

名字以及

Groups

情況。項(xiàng)目一

編譯環(huán)境的搭建STM32Keil配置下面我們往

Group

里面添加我們需要的文件。我們按照步驟

10

的方法,

右鍵點(diǎn)擊點(diǎn)擊

Tempate,選擇選擇

Manage

Project

Itmes,然后選擇需要添加文件的

Group,這里第一步我們

FWLIB

,

然后

點(diǎn)

Add

Files,定

STM32F10x_FWLib/src

下面,將里面所有的文件選中(Ctrl+A),然后點(diǎn)擊

Add,然后

Close.可以看到

Files

列表下面包含我們添加的文件。項(xiàng)目一

編譯環(huán)境的搭建STM32Keil配置項(xiàng)目一

編譯環(huán)境的搭建STM32Keil配置接下來我們要編譯工程,在編譯之前我們首先要選擇編譯中間文件編譯后存放目錄。方法是點(diǎn)擊魔術(shù)棒,然后選擇“Output”選項(xiàng)下面的“Select

folder

forobjects…”,然后選擇目錄為我們上面新建的

OBJ

目錄。這里大家注意,如果我們不設(shè)置

Output

路徑,那么默認(rèn)的編譯中間文件存放目錄就是

MDK

自動生成的

Objects

目錄和

Listings

目錄。項(xiàng)目一

編譯環(huán)境的搭建STM32Keil配置回到工程主菜單,點(diǎn)擊魔術(shù)棒

,出來一個(gè)菜單,然后點(diǎn)擊

c/c++選項(xiàng).然后點(diǎn)擊Include

Paths

右邊的按鈕。彈出一個(gè)添加

path

的對話框,然后我們將圖上面的

3

個(gè)目錄添加進(jìn)去。記住,keil

只會在一級目錄查找,所以如果你的目錄下面還有子目錄,記得

path一定要定位到最后一級子目錄。項(xiàng)目一

編譯環(huán)境的搭建STM32Keil配置定位到

c/c++界面,然后填寫“STM32F10X_HD,USE_STDPERIPH_DRIVER”到

Define

輸入框里面。下面還需要配置,讓編譯之后能夠生成

hex

文件。同樣點(diǎn)擊魔術(shù)棒,進(jìn)入配置菜單,選擇

Output。然后勾上下三個(gè)選項(xiàng)。

其中

Create

HEX

file

是編譯生成hex

文件,Browser

Information

是可以查看變量和函數(shù)定義。STM32STM32專題三

STM32I/O接口設(shè)計(jì)思路:跟著做→知識鏈接→我能做→我能學(xué)STM32項(xiàng)目3.2

我能做:汽車LED日行燈的模擬仿真專題三

STM32

I/O接口設(shè)計(jì)STM32任務(wù)目標(biāo)例如使用STM32F103**芯片的PB8

、PB9、

PB10和

PB11引腳分別接4個(gè)LED的陰極,通過程序控制多個(gè)LED閃爍點(diǎn)亮。如何控制這些LED循環(huán)點(diǎn)亮,關(guān)鍵在于如何控制STM32的IO口輸出,這是邁向STM32的第一步。專題知識目標(biāo):STM32

IO口的控制原理與方法專題三

STM32

I/O接口設(shè)計(jì)STM32跟著做:汽車LED日行燈模擬仿真任務(wù)分析小游戲:以下幾種汽車日行燈造型你都見過嗎?你還見過哪種?項(xiàng)目二

跑馬燈控制設(shè)計(jì)與實(shí)現(xiàn)STM32目

錄知識鏈接:IO口基本結(jié)構(gòu)和工作模式的認(rèn)知專題三

STM32

I/O接口設(shè)計(jì)STM32STM32F103RCT6-

一共有4組IO口-

一共16X3+3=51個(gè)IOGPIOA0~A15GPIOB0~B15GPIOC0~C15GPIOD0~D2IO口基本結(jié)構(gòu)和8種模式專題三

STM32

I/O接口設(shè)計(jì)STM32IO口基本結(jié)構(gòu)和8種模式STM32F103ZET6一共有7組IO口每組IO口有16個(gè)IO-

一共16X7=112個(gè)IOGPIOA,GPIOB---GPIOG專題三

STM32

I/O接口設(shè)計(jì)STM32STM32的大部分引腳除了當(dāng)GPIO使用外,還可以復(fù)用為外設(shè)功能引腳(比如串口),這部分知識我們會在后面講解。本講主要講解引腳做IO使用方面的知識。IO口基本結(jié)構(gòu)和8種模式專題三

STM32

I/O接口設(shè)計(jì)STM32認(rèn)識STM32的IO口專題三

STM32

I/O接口設(shè)計(jì)STM32認(rèn)識STM32的IO口STM32的IO口可以由軟件配置成8種模式浮空輸入:IN_FLOATING;上拉輸入:IPU;下拉輸入:IPD;模擬輸入:AIN;開漏輸出:Out_OD;推挽輸出:Out_PP;復(fù)用功能的推挽式輸出:AF_PP;復(fù)用功能的開漏輸出:AF_OD。專題三

STM32

I/O接口設(shè)計(jì)STM32STM32的IO口復(fù)用功能幾點(diǎn)說明:1、芯片復(fù)位后,復(fù)用功能未開啟,GPIO端口被配置成浮空輸入模式2、如果把端口位配置成復(fù)用輸入功能,則輸入引腳必須由外部驅(qū)動3、如果把端口位配置成復(fù)用輸出功能,輸出引腳和輸出寄存器斷開,并和片上外設(shè)的輸出信號連接4、如果將一個(gè)GPIO端口位配置成復(fù)用輸出功能,但是外設(shè)沒有被激活,它的輸出將不確定5、為了使不同器件封裝的外設(shè)I/O功能的數(shù)量達(dá)到最優(yōu),可以把一些復(fù)用功能重新映射到其他一些腳上專題三

STM32

I/O接口設(shè)計(jì)STM3212GPIO端口位的基本結(jié)構(gòu)(FT)專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO的輸入工作模式1—輸入浮空模式GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO的輸入工作模式2—輸入上拉模式GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO的輸入工作模式3—輸入下拉模式GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO的輸入工作模式4—模擬模式GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO的輸出工作模式1—開漏輸出模式GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO的輸出工作模式2—開漏復(fù)用輸出模式GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO的輸出工作模式3—推挽輸出模式GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO的輸出工作模式4—推挽復(fù)用輸出模式GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32推挽輸出:可以輸出強(qiáng)高低電平,連接數(shù)字器件開漏輸出:只可以輸出強(qiáng)低電平,高電平得靠外部電阻拉高。輸出端相當(dāng)于三極管的集電極.

要得到高電平狀態(tài)需要上拉電阻才行.

適合于做電流型的驅(qū)動,其吸收電流的能力相對強(qiáng)(一般20ma以內(nèi))參考帖子:/posts/list/21980.htmGPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32端口復(fù)用功能STM32的大部分端口都具有復(fù)用功能。所謂復(fù)用,就是一些端口不僅僅可以做為通用IO口,還可以復(fù)用為一些外設(shè)引腳,比如PA9,PA10可以復(fù)用為STM32的串口1引腳。作用:最大限度的利用端口資源GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32端口重映射功能就是可以把某些功能引腳映射到其他引腳。比如串口1默認(rèn)引腳是PA9,PA10可以通過配置重映射映射到PB6,PB7作用:方便布線GPIO

八種工作模式專題三

STM32

I/O接口設(shè)計(jì)STM32跟著做:汽車LED日行燈模擬仿真任務(wù)實(shí)現(xiàn):1、硬件設(shè)計(jì)BOOT060NRST71415161726272855PB0PB1PB2PB3PB4PB5PB6PB7PB8PB9PB10PB11PB12PB13PB14PB15565758596162293033343536PA0-WKUPPA1PA2PA3PA4PA5PA6PA7PA8PA9PA10PA11PA12PA13PA14PA15202122234142434445464950OSCIN_PD0OSCOUT_PD1PD25654PC0PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13_RTCPC14-OSC32_INPC15-OSC32_OUT891011242537383940515253234VBAT1U1STM32F103R6D3LED-BLUED4LED-BLUED7LED-BLUED8LED-BLUER1100D1LED-BLUER2100D2LED-BLUER3100D5LED-BLUER4100D6LED-BLUE專題三

STM32

I/O接口設(shè)計(jì)跟著做:汽車LED日行燈模擬仿真任務(wù)實(shí)現(xiàn):2、軟件設(shè)計(jì)#include

"stm32f10x.h"int

main(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,

ENABLE); //使能GPIOA時(shí)鐘GPIO_InitStructure.GPIO_Pin=

GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//選擇PA0-3//選擇工作模式//選擇GPIO最高速度//初始化GPIOA口GPIO_InitStructure.GPIO_Mode=

GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=

GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);while(1){GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);//PA0-3口輸出低電平}}STM32專題三

STM32

I/O接口設(shè)計(jì)STM32我能做:汽車LED雙閃燈的模擬仿真任務(wù)分析:科普:汽車雙閃燈應(yīng)該在什么情況下開啟?項(xiàng)目二

跑馬燈控制設(shè)計(jì)與實(shí)現(xiàn)STM32目

錄知識鏈接1:IO口寄存器配置專題三

STM32

I/O接口設(shè)計(jì)GPIO相關(guān)配置寄存器每組GPIO端口的寄存器包括:兩個(gè)32位配置寄存器(GPIOx_CRL

,GPIOx_CRH)

,兩個(gè)32位數(shù)據(jù)寄存器

(GPIOx_IDR和GPIOx_ODR),一個(gè)32位置位/

復(fù)位寄存器(GPIOx_BSRR),一個(gè)32位復(fù)位寄存器(GPIOx_BRR)(只使用16位)一個(gè)32位鎖定寄存器(GPIOx_LCKR)。每個(gè)I/O端口位可以自由編程,然而I/O端口寄存器必須按32位字被訪問(不允許半字或字節(jié)訪問)

。STM32專題三

STM32

I/O接口設(shè)計(jì)STM32是每組IO口含下面7個(gè)寄存器。也就是7個(gè)寄存器,一共可以控制一組GPIO的16個(gè)IO口。IO口控制寄存器總量=IO組數(shù)

*

7GPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO相關(guān)配置寄存器typedef

struct{

IOuint32_t

CRL;

IOuint32_t

CRH;

IOuint32_t

IDR;

IOuint32_t

ODR;

IOuint32_t

BSRR;

IOuint32_t

BRR;

IOuint32_t

LCKR;}GPIO_TypeDef;專題三

STM32

I/O接口設(shè)計(jì)STM32GPIO相關(guān)配置寄存器1.

端口配置低寄存器(GPIOx_CRL)專題三

STM32

I/O接口設(shè)計(jì)淘寶店鋪:STM32技術(shù)論壇:GPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM322.

端口配置高寄存器(GPIOx_CRH)GPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM323.

端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)GPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM324.

端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)GPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM325. 端口位設(shè)置/清除寄存器(GPIOx_BSRR)GPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM326. 端口位清除寄存器(GPIOx_BRR)GPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM327. 端口配置鎖定寄存器(GPIOx_LCKR)GPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM32操作IO口的一般步驟:使能IO口時(shí)鐘:APB2ENR初始化IO口模式:CRL/CRH操作IO口,輸出高低電平:

ODR,BSRR,BRRGPIO相關(guān)配置寄存器專題三

STM32

I/O接口設(shè)計(jì)STM32寄存器太復(fù)雜了,有沒有能替代寄存器的寫法?GPIO相關(guān)配置寄存器項(xiàng)目二

跑馬燈控制設(shè)計(jì)與實(shí)現(xiàn)STM32目

錄3.

IO口庫函數(shù)配置專題三

STM32

I/O接口設(shè)計(jì)STM32STM32的GPIO初始化庫函數(shù)1、RCC_APB2PeriphClockCmd()

IO口時(shí)鐘初始化函數(shù)專題二中介紹了STM32官方庫中STM32F10x_FWLib文件夾包含了標(biāo)準(zhǔn)外設(shè)庫的各類函數(shù),其中的stm32f10x_gpio.c就包含了和GPIO相關(guān)的配置函數(shù),我們在調(diào)用這些函數(shù)時(shí)需要了解它們的功能、參數(shù),建議在熟練掌握STM32硬件配置方法后再具體分析函數(shù)代碼。函數(shù)名稱RCC_APB2PeriphClockCmd()函數(shù)作用控制GPIO時(shí)鐘函數(shù)示例RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);專題三

STM32

I/O接口設(shè)計(jì)STM32STM32的GPIO初始化庫函數(shù)2、GPIO_Init()

IO初始化函數(shù)GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,

&GPIO_InitStructure);函數(shù)名稱GPIO_Init()函數(shù)作用GPIO初始化函數(shù)示例GPIO_Init(GPIOA,

&GPIO_InitStructure);專題三

STM32

I/O接口設(shè)計(jì)STM32STM32的GPIO初始化庫函數(shù)3、GPIO_Write()函數(shù)GPIO_Write()函數(shù)的功能是一次性向指定一組GPIO數(shù)據(jù)端口寫入16位數(shù)據(jù),0代表輸出低電平,1代表輸出高電平。函數(shù)名稱GPIO_Write

()函數(shù)作用向指定IO口寫數(shù)據(jù)函數(shù)示例GPIO_Write(GPIOC,

0xFFFE);//

向GPIOC口寫0xFFFE專題三

STM32

I/O接口設(shè)計(jì)STM32STM32的GPIO初始化庫函數(shù)小問答為下面這段初始化I/O程序加上注釋GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,

ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOA,

&GPIO_InitStructure);GPIO_Init(GPIOE,

&GPIO_InitStructure);專題三

STM32

I/O接口設(shè)計(jì)STM32STM32的GPIO初始化庫函數(shù)小問答為下面這段初始化I/O程序加上注釋//第一題GPIO_Write(GPIOA,0X0101);//第二題Int

i;for(i=0;i<=7;i++){GPIO_Write(GPIOA,0x0001<<i);}專題三

STM32

I/O接口設(shè)計(jì)STM32跟著做:汽車LED日行燈模擬仿真任務(wù)實(shí)現(xiàn):1、硬件設(shè)計(jì)BOOT060NRST71415161726272855PB0PB1PB2PB3PB4PB5PB6PB7PB8PB9PB10PB11PB12PB13PB14PB15565758596162293033343536PA0-WKUPPA1PA2PA3PA4PA5PA6PA7PA8PA9PA10PA11PA12PA13PA14PA15202122234142434445464950OSCIN_PD0OSCOUT_PD1PD25654PC0PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13_RTCPC14-OSC32_INPC15-OSC32_OUT891011242537383940515253234VBAT1U1STM32F103R6D3LED-BLUED4LED-BLUED7LED-BLUED8LED-BLUER1100D1LED-BLUER2100D2LED-BLUER3100D5LED-BLUER4100D6LED-BLUE專題三

STM32

I/O接口設(shè)計(jì)STM32跟著做:汽車LED日行燈模擬仿真任務(wù)實(shí)現(xiàn):2、軟件設(shè)計(jì)#include

"stm32f10x.h"void

Delay(unsigned

int

count)

//延時(shí)函數(shù){unsignedinti;for(;count!=0;count--){i=5000;while(i--);}}intmain(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,

ENABLE);//使能GPIOA時(shí)鐘GPIO_InitStructure.GPIO_Pin=

GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//選擇PA0-3//選擇工作模式//選擇GPIO最高速度//初始化GPIOA口while(1)GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=

GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);{GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|

GPIO_Pin_3);//

PA0-3輸出低電平,小燈點(diǎn)亮Delay(200);GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|

GPIO_Pin_3);//

PA0-3輸出高電平,小燈熄滅Delay(200);}}專題三

STM32

I/O接口設(shè)計(jì)STM32任務(wù)2.3

我能做:奧迪汽車流水燈模擬仿真任務(wù)分析:思考:什么是汽車的迎賓燈?專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的GPIO寫庫函數(shù)1、GPIO_SetBits()、GPIO_ResetBits()函數(shù)第一個(gè)參數(shù)表示某一組I/O口,對于STM32F103ZET6來講就是GPIOA-GPIOG。第二個(gè)參數(shù)是對應(yīng)管腳的宏定義,可選值有GPIO_Pin_0-

GPIO_Pin_15之一,也可同時(shí)選擇多個(gè)I/O口,要用按位或符號隔開。所有I/O口全選則寫作GPIO_Pin_All。如想讓PA0-PA3口都輸出低電平,控制程序?yàn)椋篏PIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);同理,在項(xiàng)目3.2中如果想讓所有的LED小燈都不亮,那就需要讓PA0-PA3口都輸出高電平,控制程序?yàn)椋篏PIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);函數(shù)名稱GPIO_SetBits()GPIO_ResetBits

()函數(shù)作用配置指定IO口的引腳輸出高電平或低電平函數(shù)示例GPIO_SetBits

(GPIOC,

GPIO_Pin_8);//

GPIOC.8引腳輸出高電平GPIO_ResetBits

(GPIOC,

GPIO_Pin_9);//

GPIOC.9引腳輸出低電平專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的GPIO寫庫函數(shù)2、GPIO_Write()函數(shù)GPIO_WriteBit()函數(shù)的功能是某一組I/O中的一位輸出高電平或低電平。其中第一個(gè)參數(shù)表示某一組I/O口,第二個(gè)參數(shù)是對應(yīng)管腳,區(qū)別是第三個(gè)參數(shù)l,可以看到這個(gè)參數(shù)類型是enum類型也就是枚舉類型,說明這個(gè)函數(shù)的第三個(gè)參數(shù)只能是Bit_RESET或者是Bit_SET,根據(jù)以下定義BitVal的第一個(gè)值也就是Bit_RESET=0,那么Bit_SET就默認(rèn)是1了。函數(shù)名稱GPIO_WriteBit

()函數(shù)作用向指定IO口的引腳寫0或者寫1函數(shù)示例GPIO_WriteBit(GPIOC,

GPIO_Pin_8,1);//向PC8寫1專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的GPIO寫庫函數(shù)交流與思考GPIO_WriteBit()和

GPIO_SetBits()、GPIO_ResetBits()有什么區(qū)別?對于單個(gè)引腳的操作,兩個(gè)函數(shù)沒有區(qū)別。如:GPIO_WriteBit(GPIOB,GPIO_Pin_5,1);GPIO_SetBits(GPIOB,

GPIO_Pin_5);以上兩個(gè)函數(shù)都是配置

PB5

口輸出高電平,可以相互替代。但如果要配置多個(gè)

IO

口輸出高電平,就只能選擇

GPIO_SetBits()函數(shù)了。如:GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|

GPIO_Pin_7);專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的寫庫函數(shù)交流與思考在同時(shí)配置多位

I/O

口時(shí),GPIO_Write()和GPIO_SetBits()、GPIO_ResetBits()有什么區(qū)別?GPIO_Write()和

GPIO_SetBits()、GPIO_ResetBits()都可以同時(shí)配置多個(gè)

I/O

口的輸出電平狀態(tài)。但在實(shí)際開發(fā)中,STM32

的一組I/O

口可能會連接多個(gè)外設(shè)。如果使用

GPIO_Write()函數(shù)的話,會將一組

I/O

口的狀態(tài)都進(jìn)行修改。比如上文中想讓

PA0-PA3

口都輸出低電平,同時(shí)也配置了其他引腳為高電平了,這樣可能影響到其他已連接外設(shè)的工作狀態(tài)。所以在不清楚其他引腳的工作狀態(tài)的情況下,建議僅對自己已知的引腳進(jìn)行位操作,也就是使用

GPIO_SetBits()、GPIO_ResetBits()函數(shù)。專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的GPIO寫庫函數(shù)小問答為下面這段配置

I/O

狀態(tài)程序加上注釋GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2);GPIO_SetBits(GPIOA,0X0003);GPIO_ResetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4);GPIO_ResetBits(GPIOA,GPIO_Pin_All);GPIO_WriteBit(GPIOA,

GPIO_Pin_2,Bit_RESET);GPIO_Write(GPIOA,0X0101);專題三

STM32

I/O接口設(shè)計(jì)STM32任務(wù)2.3

我能做:奧迪汽車流水燈模擬仿真參考硬件:U1STM32F103R6D1

D2

D3

D4

D5

D6

D7

D8LED-BLULED-BLULED-BLULED-BLULED-BLULED-BLULED-BLULED-BLUED9D10D11D12D13D14D15

D16LED-BLULED-BLULED-BLULED-BLULED-BLULED-BLULED-BLULED-BLUE1234567812345678ghefcdab14PA0-WKUP NRSTPA1PA2 PC0PA3 PC1PA4 PC2PA5 PC3PA6 PC4PA7 PC5PA8 PC6PA9 PC7PA10 PC8PA11 PC9PA12 PC10PA13 PC11PA14 PC12PA15 PC13_RTCPC14-OSC32_INPB0 PC15-OSC32_OUTPB1PB2PB3 OSCIN_PD0PB4 OSCOUT_PD1PB5 PD2PB6PB7PB8PB9PB10PB11 VBATPB12PB13PB14PB15 BOOT07151681792010211122242325413742384339444045514652495350232642728555566575458596162293013334353660abcdefgh專題三

STM32

I/O接口設(shè)計(jì)STM32任務(wù)2.3

我能做:奧迪汽車流水燈模擬仿真RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin=0XFF;GPIO_InitStructure.GPIO_Mode=

GPIO_Mode_Out_OD;//打開數(shù)據(jù)總線APB2時(shí)鐘源//選擇IO//開漏輸出//速度10MHzGPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOA,

&GPIO_InitStructure);//配置PBRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=0XFF;GPIO_InitStructure.GPIO_Mode=

GPIO_Mode_Out_OD;//打開數(shù)據(jù)總線APB2時(shí)鐘源//選擇IO//開漏輸出//速度10MHz//配置PBGPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOB,

&GPIO_InitStructure);while(1){GPIO_Write(GPIOA,0xff);GPIO_Write(GPIOB,0xff);for(i=0;i<=7;i++){GPIO_ResetBits(GPIOA,1<<i);//GPIO_SetBits

亮燈

pe5

pb5

輸出低電平GPIO_ResetBits(GPIOB,0X80>>i);//GPIO_SetBits

亮燈

pe5

pb5

輸出低電平Delay(100);}}}參考代碼:GPIO_InitTypeDef GPIO_InitStructure;//GPIO_InitTypeDef

是結(jié)構(gòu)體類型,

定義一個(gè)結(jié)構(gòu)體,

結(jié)構(gòu)體名是GPIO_InitStructure專題三

STM32

I/O接口設(shè)計(jì)STM32任務(wù)2.4

我能做:奧迪汽車轉(zhuǎn)向燈模擬仿真任務(wù)分析:汽車轉(zhuǎn)向燈是指在車輛轉(zhuǎn)彎時(shí),通過開啟相應(yīng)方向的閃爍指示燈,來警示車前或車后的行人或車輛,提示本車的行駛方向。本項(xiàng)目中通過按鍵控制LED小燈閃爍,模擬仿真汽車轉(zhuǎn)向燈效果。專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的GPIO讀庫函數(shù)1、GPIO_ReadInputDataBit()GPIO_ReadInputDataBit()函數(shù)功能是讀取某一組I/O口中的一位I/O輸入的電平高低,它的返回值是1或者0。需要注意的是使用此函數(shù)之前要在初始化程序中將工作模式設(shè)置為輸入模式。if(GPIO_ReadInputDataBit(GPIOA,

GPIO_Pin_6)==0)//讀PA6輸入低電平{//語句}函數(shù)名稱GPIO_ReadInputDataBit

()函數(shù)作用位輸入函數(shù)函數(shù)示例GPIO_ReadInputDataBit(GPIOA,

GPIO_Pin_6);//讀取

PA6

引腳值專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的GPIO讀庫函數(shù)2、GPIO_ReadInputData()GPIO_ReadInputData

()函數(shù)功能是一次性讀取某一組I/O口所有的電平狀態(tài)。if(GPIO_ReadInputDataBit(GPIOA)==0x0000)//讀PA0-15都輸入低電平{//語句}函數(shù)名稱GPIO_ReadInputData()函數(shù)作用字節(jié)數(shù)入函數(shù)函數(shù)示例temp

=

GPIO_ReadInputData(GPIOB);//

讀取GPIOB口輸入值專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的GPIO寫庫函數(shù)小提示GPIO_ReadOutputDataBit

()函數(shù)和GPIO_ReadOutputData

()函數(shù)標(biāo)準(zhǔn)外設(shè)庫函數(shù)的輸入函數(shù)還包括了

GPIO_ReadOutputDataBit

()函數(shù)和GPIO_ReadOutputData

()函數(shù),顧名思義這兩個(gè)函數(shù)是讀取當(dāng)

I/O

口輸出時(shí)的一個(gè)口和一組口的輸出電平狀態(tài)。它們的參數(shù)和以上兩個(gè)函數(shù)相同。在本專題項(xiàng)目中沒有調(diào)用這兩個(gè)函數(shù),可以自行學(xué)習(xí)和練習(xí)調(diào)用。專題三

STM32

I/O接口設(shè)計(jì)STM32知識鏈接:STM32的GPIO寫庫函數(shù)小問答為下面這段配置

I/O

狀態(tài)程序加上注釋while(GPIO_ReadInputDataBit(GPIOBGPIO_Pin_6)!=0)if(GPIO_ReadInputData

(GPIOA)!=0)#definekey1=GPIO_ReadInputDataBit(GPIOBGPIO_Pin_6)If(key1!=0)專題三

STM32

I/O接口設(shè)計(jì)STM32任務(wù)2.4

我能做:奧迪汽車轉(zhuǎn)向燈模擬仿真參考硬件:BOOT060NRST71415161720212223262728555657585989101124253738394051PB0PB1PB2PB3PB4PB5PB6PB7PB8

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論