ARM嵌入式開發(fā)實例-第5章_第1頁
ARM嵌入式開發(fā)實例-第5章_第2頁
ARM嵌入式開發(fā)實例-第5章_第3頁
ARM嵌入式開發(fā)實例-第5章_第4頁
ARM嵌入式開發(fā)實例-第5章_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1

在ARM嵌入式市場上,ARM處理器的廣泛應(yīng)用不僅僅是因為ARM在系統(tǒng)內(nèi)核方面的優(yōu)勢,更重要是ARM微處理器生產(chǎn)廠商在取得ARM公司的內(nèi)核授權(quán)之后,根據(jù)各自產(chǎn)品市場的特點為ARM處理器添加了豐富的功能模塊,即系統(tǒng)外設(shè)。常見的外設(shè)有ADC/DAC、USART通訊接口、CAN通訊接口和協(xié)處理器等。

在本章內(nèi)容中,以STM32F103XX系列ARM處理器為例,主要介紹芯片中常用的一些功能模塊及其使用方法。通過本章的學(xué)習(xí),用戶可以掌握ARM處理器內(nèi)部所支持的通用功能模塊,并能利用這些功能模塊完成相應(yīng)的系統(tǒng)設(shè)計。第5章STM32F103XX功能模塊〔1〕本章節(jié)重難點2【本章重點】1STM32F103XX中的功能模塊:GPIO接口模塊、ADC轉(zhuǎn)換模塊、外部中斷模塊、高級定時器TIMI、通用定時器TIMx;2STM32F103XX功能模塊的控制存放器;3STM32F103XX功能模塊的使用〔實驗局部〕;【本章難點】1STM32F103XX中的功能模塊與作用;2STM32F103XX中功能模塊的使用〔實驗局部〕;3在ARM處理器市場中,憑借自身在內(nèi)核和硬件資源等突出優(yōu)點,正得到越來越廣泛的應(yīng)用。通常而言,ARM處理器有多種內(nèi)核結(jié)構(gòu),不同廠商生產(chǎn)的ARM處理器還分別支持不同的功能模塊。因此,用戶在進(jìn)行ARM嵌入式系統(tǒng)設(shè)計的過程中,選擇一款適宜的ARM處理器芯片是非常重要的。其中,ARM處理器的功能模塊是芯片選擇過程中的一個重要指標(biāo)。第5章STM32F103XX功能模塊5.1ARM處理器的選型與功能模塊45.1ARM處理器的選型與功能模塊5.1.1ARM處理器的性能參數(shù)1、ARM內(nèi)核的版本對于ARM內(nèi)核版本而言,如果用戶希望WinCE或者Linux等嵌入式操作系統(tǒng),那么可以在一定程度上減少嵌入式系統(tǒng)軟件開發(fā)的周期時間。但這種情況下,用戶就必須選擇帶有MMU〔MemoryManagementUnit〕功能的ARM芯片。除此之外,ARM內(nèi)核的工作性能也是評價嵌入式系統(tǒng)的重要指標(biāo)。如果需要開發(fā)一些實時性要求比較高的嵌入式系統(tǒng),如車載通訊網(wǎng)絡(luò)系統(tǒng)、發(fā)動機(jī)實時控制系統(tǒng)等,應(yīng)該選擇一些高性能的ARM內(nèi)核,因為這些嵌入式系統(tǒng)對處理器的運行性能有比較高的要求。55.1ARM處理器的選型與功能模塊2、內(nèi)存存儲器的容量在絕大局部的ARM處理器中,系統(tǒng)都集成了片上FLASH存儲器。用戶在設(shè)計ARM嵌入式開發(fā)系統(tǒng)的過程中,如果應(yīng)用系統(tǒng)不需要大容量存儲空間,那么用戶可以選擇帶有內(nèi)置FLASH存儲器的ARM處理器。除此之外,不同ARM處理器內(nèi)置的RAM存儲器空間的大小也各自不同,用戶也需要根據(jù)當(dāng)前所設(shè)計的ARM嵌入式系統(tǒng)的需求進(jìn)行選擇。65.1ARM處理器的選型與功能模塊3、電源控制與系統(tǒng)功耗 鑒于ARM嵌入式系統(tǒng)的市場需求,一些應(yīng)用系統(tǒng)對電源功耗比較敏感,特別是一些消費多媒體、手持終端設(shè)備等。例如,智能系統(tǒng)的耗電量直接影響到待機(jī)時間的長短。在STM32F103XX系列ARM處理器中,芯片內(nèi)部已經(jīng)集成了專門的電源管理模塊,且具有低功耗模式、休眠模式,以及待機(jī)模式等。通過這些節(jié)電模式,用戶可以通過一系列的電源管理手段以防止ARM嵌入式系統(tǒng)中不必要的電源消耗,降低系統(tǒng)功耗。

75.1ARM處理器的選型與功能模塊4、DSP協(xié)處理器從ARM處理器的特性來看,嵌入式系統(tǒng)的結(jié)構(gòu)體系比較適合應(yīng)用在系統(tǒng)控制領(lǐng)域。在一些對實時性要求比較高的嵌入式系統(tǒng),例如車載CAN網(wǎng)絡(luò)通訊、無線數(shù)據(jù)傳輸?shù)?,對?shù)字信號的處理具有較高的要求。因此,在這類嵌入式系統(tǒng)設(shè)計的過程中,用戶需要使用DSP處理實現(xiàn)嵌入式系統(tǒng)中的控制復(fù)雜度,以及快速出去數(shù)字信號運算的能力。在這種情況下,用戶可以采用帶DSP處理器的ARM芯片,常見的帶DSP處理器ARM芯片有TI公司的Davinci。

85.1ARM處理器的選型與功能模塊5.1.2ARM處理器的外部接口1、GPIO端口對于ARM處理器而言,GPIO端口的數(shù)量是系統(tǒng)資源的重要指標(biāo)之一,也是處理器重要的外設(shè)接口。在最早的單片機(jī)模型中,GPIO端口與外部設(shè)備之間數(shù)據(jù)交換,是單片機(jī)系統(tǒng)最主要甚至唯一的功能。在ARM嵌入式系統(tǒng)設(shè)計的過程中,處理器GPIO端口的數(shù)量必須能夠滿足外圍接口電路的要求。如果用戶選擇的ARM處理器GPIO端口缺乏,那么需要對端口進(jìn)行擴(kuò)展。GPIO端口的外部擴(kuò)展顯然會降低系統(tǒng)數(shù)據(jù)傳輸?shù)乃俣?,不適合對GPIO工作速度要求比較高的場合。除此之外,較多的GPIO端口過多勢必又會增加ARM芯片引腳的數(shù)量,增加電路板設(shè)計的復(fù)雜度。95.1ARM處理器的選型與功能模塊2、通訊端口通信接口是當(dāng)前ARM嵌入式系統(tǒng)中必須具備的、使用最為廣泛的接口。在所有的ARM嵌入式系統(tǒng)中,根本都具備了通信端口。常用的通訊接口主要包括USART通訊端口、CAN〔控制局域網(wǎng)絡(luò)〕通訊端口、USB通訊端口、SPI通訊端口、I2C通訊端口等。如果用戶在設(shè)計ARM嵌入式系統(tǒng)的過程中,所選的ARM處理器沒有集成相應(yīng)的通訊接口,那么用戶需要在外部接口電路中重新設(shè)計相應(yīng)的硬件電路和控制程序代碼。105.1ARM處理器的選型與功能模塊3、其他外部設(shè)備除了上述提到影響ARM嵌入式系統(tǒng)性能的外部設(shè)備外,用戶還需要考慮其他因素對嵌入式系統(tǒng)的影響,包括PWM〔脈沖寬度調(diào)制〕輸出、ADC和DAC模塊、總線擴(kuò)展模塊、LCD控制器、看門狗watchdog等。雖然上述這些外部設(shè)備在ARM嵌入式系統(tǒng)中并不是缺一不可的,但如果用戶在系統(tǒng)設(shè)計的過程中,在不增加本錢的前提條件下選用帶有這些特定功能模塊的ARM芯片,能給系統(tǒng)的硬件和軟件開發(fā)工作提供方便。DIP封裝不同的芯片封裝在散熱性能、信號完整性特性、PCB體積等各個方面都各不相同。在上述這些芯片封裝中,DIP封裝是早期處理器芯片的主要封裝形式,如右圖所示。而目前,絕大局部芯片由于GPIO端口引腳增多而沒有延續(xù)采用DIP封裝,只在一些結(jié)構(gòu)功能比較簡單的集成芯片中保存使用。DIP封裝主要的特點是焊接相比照較容易,且更換芯片比較方便。11DIP〔雙列直插式〕封裝5.1ARM處理器的選型與功能模塊5.1.3ARM處理器的芯片封裝12QFP封裝〔方型扁平式封裝技術(shù)〕在ARM處理器中,一些低端的芯片主要采用QFP〔QuadFlatPackage〕封裝,即在芯片四周都布有管腳的方形封裝形式,如右圖所示。對于QFP封裝而言,最多能支持的芯片管腳數(shù)量在100~200之間。例如,STM32F101T4就是采用的QFN36封裝。一般而言,封裝符號后的數(shù)字即表示芯片的引腳數(shù)。5.1ARM處理器的選型與功能模塊QFP〔QuadFlatPackage〕封裝13QFP封裝在ARM處理器中,一些低端的芯片主要采用QFP〔QuadFlatPackage〕封裝,即在芯片四周都布有管腳的方形封裝形式,如右圖所示。對于QFP封裝而言,最多能支持的芯片管腳數(shù)量在100~200之間。例如,STM32F101T4就是采用的QFN36封裝。一般而言,封裝符號后的數(shù)字即表示芯片的引腳數(shù)。5.1ARM處理器的選型與功能模塊QFP〔QuadFlatPackage〕封裝14BGA封裝〔球柵陣列結(jié)構(gòu)〕隨著集成電路技術(shù)的開展,ARM嵌入式芯片對集成電路的封裝具有越來越高的要求。因此,芯片生產(chǎn)廠商除了使用QFP封裝方式外,大多數(shù)管腳數(shù)量比較多的ARM芯片都使用了BGA封裝技術(shù)。BGA封裝技術(shù)使得高密度、高性能、以及多引腳芯片封裝技術(shù)成為芯片生產(chǎn)廠商的最正確選擇。BGA封裝技術(shù)如圖5-3所示,在芯片封裝的反面具有球狀管腳5.1ARM處理器的選型與功能模塊BGA〔BallGridArrayPackage〕封裝內(nèi)核:ARM32位CortexTM-M3CPU〔1〕最高可支持72MHz的處理器工作頻率,在存儲器的0等待周期訪問時,可到達(dá)1.25DMips/MHz〔2〕支持單周期乘法和硬件除法存儲器〔1〕支持從64K到128K字節(jié)的閃存程序存儲器〔2〕支持高達(dá)20K字節(jié)的SRAM155.1ARM處理器的選型與功能模塊5.1.4STM32F103XX系列ARM處理器16時鐘、復(fù)位和電源管理〔1〕支持2.0~3.6V電源供電以及IO引腳電平信號〔2〕支持上電復(fù)位POR、斷電復(fù)位PDR、以及可編程電壓檢測器PVD〔3〕支持外部4~16MHz的晶體振蕩器〔4〕內(nèi)部集成了經(jīng)由出廠調(diào)試的8MHz的RC振蕩器〔5〕內(nèi)部集成了帶校準(zhǔn)的40KHz的RC振蕩器〔6〕支持產(chǎn)生CPU時鐘的PLL〔7〕集成帶校準(zhǔn)功能的32KHz的RTC振蕩器系統(tǒng)低功耗〔1〕支持睡眠模式、停機(jī)模式和待機(jī)模式〔2〕支持VBAT為RTC和后備存放器供電5.1ARM處理器的選型與功能模塊1712bit模數(shù)轉(zhuǎn)換器〔1〕支持0~3.6V電壓的轉(zhuǎn)換范圍;〔2〕支持2個12bit的模數(shù)轉(zhuǎn)換器,最多支持16個輸入通道,轉(zhuǎn)換時間為1us;〔3〕支持雙路采樣和保持功能;〔4〕集成溫度傳感器;直接內(nèi)存存取DMA〔DirectMemoryAccess〕〔1〕支持7通道DMA控制器;〔2〕支持定時器Timer、模數(shù)轉(zhuǎn)換器ADC、通訊SPI、I2C以及USART等外部設(shè)備的DMA操作;5.1ARM處理器的選型與功能模塊18GPIO快速端口〔1〕不同型號的處理器芯片分別支持26/37/51/80個通用快速數(shù)字IO端口;〔2〕所有GPIO快速端口均可分別映像為16個外部中斷;〔3〕絕大局部GPIO端口均可容忍5V電壓的輸入;處理器調(diào)試模式〔1〕支持串行膽單線調(diào)試方式SWD;〔2〕支持JTAG調(diào)試接口;5.1ARM處理器的選型與功能模塊19內(nèi)部集成7個定時器〔1〕內(nèi)部集成了3個16bit的定時器,沒個定時器支持4個用于輸入捕獲/輸出比較/PWM或者脈沖計數(shù)的通道和增量編碼器輸入;〔2〕內(nèi)部集成1個16bit帶死去控制何緊急剎車,適用于電機(jī)控制的PWM高級控制定時器;〔3〕支持2個看門狗定時器,分別為獨立定時器和窗口型定時器;〔4〕支持系統(tǒng)時間定時器,即一個24bit的自減型計數(shù)器;5.1ARM處理器的選型與功能模塊20內(nèi)部集成9個通信接口〔1〕支持2個I2C接口,支持SMBus/PMBus;〔2〕支持3個USART接口,并且支持ISO7816接口,LIN,IrDA接口和調(diào)制解調(diào)控制;〔3〕支持2個SPI接口,通訊速率為18MB/s;〔4〕支持CAN通訊接口;〔5〕支持USB2.0通訊接口;5.1ARM處理器的選型與功能模塊21在STM32F103XX系列處理器中,芯片中的絕大局部GPIO管腳除了能夠作為通用數(shù)字信號輸入/輸出端口外,還可以具有第2功能,甚至第3功能,即GPIO端口的復(fù)用功能。注意:使用ARM芯片的任意功能模塊之前,都必須對功能模塊的引腳進(jìn)行連接配置,否那么芯片將使用默認(rèn)連接。第五章STM32F103XX功能模塊5.2GPIO接口模塊225.1ARM處理器的選型與功能模塊5.2.1GPIO引腳描述處理器上電后,所有的GPIO端口都默認(rèn)為通用數(shù)字輸入/輸出端口〔GeneralPurposeInputOutput

〕。

STM32F103VB共有80個多功能復(fù)用輸入輸出口〔I/O口〕,分為5組PA~PE,每組16個端口。注意:每個引腳的功能必須在啟動主程序之前進(jìn)行定義。STM32F103VB引腳最大輸入容忍電壓為5V。235.2GPIO接口模塊STM32F103VB封裝STM32F103VB處理器引腳分布對于STM32F103VB處理器而言,不同的封裝形式具有不同的引腳,分別支持了LQFP100和BGA100的封裝形式。由于BGA的封裝形式對焊接的要求比較高,因此,更多的ARM嵌入式工程師傾向于使用LQFP100的封裝形式,其引腳分布如右圖所示。

245.1ARM處理器的選型與功能模塊5.2.2GPIO功能描述GPIO端口模式:GPIO端口的每個位可以通過編程分別配置成多種模式:

1.

浮空輸入GPIO_Mode_IN_FLOATING

2.

帶上拉輸入GPIO_Mode_IPU

3.

帶下拉輸入GPIO_Mode_IPD

4.

模擬輸入

GPIO_Mode_AIN

5.

開漏輸出GPIO_Mode_Out_OD

6.

推挽輸出

GPIO_Mode_Out_PP

7.

復(fù)用功能的推挽輸出GPIO_Mode_AF_PP

8.

復(fù)用功能的開漏輸出GPIO_Mode_AF_OD其中,模式7和模式8需根據(jù)具體的復(fù)用功能決定。255.1ARM處理器的選型與功能模塊5.2.2GPIO功能描述I/O口輸出速度I/O口在輸出模式下,有3種輸出速度可選:2MHz、10MHz和50MHz;優(yōu)點:有利于噪聲控制。注意:這個速度是指I/O口驅(qū)動電路的響應(yīng)速度而不是輸出信號的速度,輸出信號的速度與程序有關(guān)。265.1ARM處理器的選型與功能模塊5.2.2GPIO功能描述GPIO配置舉例操作步驟:

1.

使能GPIO對應(yīng)的外設(shè)時鐘

例如:使能GPIOA、GPIOB、GPIOC對應(yīng)的外設(shè)時鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA

|

RCC_APB2Periph_GPIOB|

RCC_APB2Periph_GPIOC

,

ENABLE);

2.

聲明一個GPIO_InitStructure結(jié)構(gòu)體

例如:GPIO_InitTypeDef

GPIO_InitStructure;

275.1ARM處理器的選型與功能模塊5.2.2GPIO功能描述GPIO配置舉例操作步驟:

3、選擇待設(shè)置的GPIO管腳例如:/*選擇待設(shè)置的GPIO第7、8、9管腳位,中間加“|”符號*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;

4.設(shè)置選中GPIO管腳的速率例如:/*設(shè)置選中GPIO管腳的速率為最高速率2MHz*/

GPIO_InitStructure.GPIO_Speed

=GPIO_Speed_2MHz; //最高速率2MHz285.1ARM處理器的選型與功能模塊5.2.2GPIO功能描述GPIO配置舉例操作步驟:

5、

設(shè)置選中GPIO管腳的模式例如:/*設(shè)置選中GPIO管腳的模式為開漏輸出模式*/

GPIO_InitStructure.GPIO_Mode=

GPIO_Mode_Out_OD;//開漏輸出模式6、根據(jù)GPIO_InitStructure中指定的參數(shù)初始化外設(shè)GPIOX例如:/*根據(jù)GPIO_InitStructure中指定的參數(shù)初始化外設(shè)GPIOC*/

GPIO_Init(GPIOC,&GPIO_InitStructure);295.1ARM處理器的選型與功能模塊5.2.2GPIO功能描述GPIO配置舉例操作步驟:

7、

其他應(yīng)用 例:將端口GPIOA的第10、15腳置1〔高電平〕GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);例:將端口GPIOA的第10、15腳置0〔低電平〕GPIO_ResetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);305.1ARM處理器的選型與功能模塊5.2.3GPIO存放器描述每個GPIO端口有:兩個32位配置存放器(端口配置低存放器GPIOx_CRL,端口配置高存放器GPIOx_CRH),兩個32位數(shù)據(jù)存放器(端口輸入數(shù)據(jù)存放器GPIOx_IDR和端口輸出數(shù)據(jù)存放器GPIOx_ODR),一個32位置位/復(fù)位存放器(端口位設(shè)置/復(fù)位存放器GPIOx_BSRR),一個16位復(fù)位存放器(端口位復(fù)位存放器GPIOx_BRR)一個32位鎖定存放器(端口配置鎖定存放GPIOx_LCKR〕其他: 事件控制存放器EVCR、復(fù)用重映射和調(diào)試MAPR、配置存放器I/O、外部中斷線路0-15配置存放器EXTICR

315.2GPIO接口模塊5.2.4GPIO管腳庫函數(shù)在嵌入式開發(fā)系統(tǒng)中,用戶對STM32F103VB處理器GPIO端口的操作,既可以通過對芯片底層的存放器進(jìn)行直接操作,也可以使用ST公司提供的標(biāo)準(zhǔn)函數(shù)庫。STM32標(biāo)準(zhǔn)函數(shù)庫中關(guān)于GPIO端口函數(shù)覆蓋了幾乎所有對處理器引腳操作的功能:管腳設(shè)置,單位設(shè)置/重置,鎖定機(jī)制,從端口管腳讀入或者向端口管腳寫入數(shù)據(jù)。325.2GPIO接口模塊5.2.4GPIO管腳庫函數(shù)335.2GPIO接口模塊5.2.3GPIO管腳庫函數(shù)函數(shù)GPIO_DeInit用戶可以通過下面的代碼對函數(shù)GPIO_DeInit的具體使用方法進(jìn)行了解。該代碼的主要功能是將GPIO引腳中的端口A進(jìn)行初始化操作。//ResetGPIOAperipheralregisterstothedefaultresetvaluesGPIO_DeInit(GPIOA)函數(shù)GPIO_Init在函數(shù)GPIO_Init的第2個參數(shù)中,涉及到了新的函數(shù)類型GPIO_InitTypeDef,該結(jié)構(gòu)體中包含了有關(guān)GPIO端口的根本參數(shù),如引腳名稱、引腳傳輸速度、引腳工作模式等,其根本的語法結(jié)構(gòu)如下所示:typedefstruct{ u16GPIO_Pin; GPIOSpeed_TypyDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode;}GPIO_InitTypeDef345.2GPIO接口模塊函數(shù)GPIO_ReadInputDataBit該函數(shù)的主要功能是從ARM處理器GPIO端口引腳的狀態(tài),即1bit。用戶可以通過下面的代碼對函數(shù)GPIO_ReadInputDataBit的具體使用方法進(jìn)行了解。該代碼的主要功能是讀取GPIO引腳中的端口B中第7個管腳的輸入狀態(tài)。第1行://Readthe7thpinofGPIOBandstoreitinReadValuevariable第2行:u8ReadValue;第3行:ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);355.2GPIO接口模塊函數(shù)GPIO_ReadInputData在上述函數(shù)GPIO_ReadInputDataBit中,從功能角度上而言,只能對ARM處理器GPIO端口中的某一個引腳。在STM32標(biāo)準(zhǔn)函數(shù)庫中,用戶可以使用GPIO_ReadInputData來實現(xiàn)對ARM處理器引腳狀態(tài)的批量讀取操作。用戶可以通過下面的代碼對函數(shù)GPIO_ReadInputData的具體使用方法進(jìn)行了解。該代碼的主要功能是讀取GPIO引腳中的端口C中所有管腳的輸入狀態(tài)。第1行://ReadallpinsofGPIOBandstoretheresultinReadValuevariable第2行:u16ReadValue;第3行:ReadValue=GPIO_ReadInputData(GPIOC);365.2GPIO接口模塊函數(shù)GPIO_WriteBit在STM32標(biāo)準(zhǔn)函數(shù)庫中,用戶可以使用函數(shù)GPIO_WriteBit來實現(xiàn)對ARM處理器引腳狀態(tài)的寫數(shù)據(jù)操作。用戶可以通過下面的代碼對函數(shù)GPIO_WriteBit的具體使用方法進(jìn)行了解。該代碼的主要功能是將GPIOA端口中的第15引腳設(shè)置為高電平,即寫1操作。第1行://SettheGPIOAportpin15第2行:GPIO_WriteBit(GPIOA,GPIO_Pin_15,Bit_Set);375.2GPIO接口模塊函數(shù)GPIO_Write在STM32標(biāo)準(zhǔn)函數(shù)庫中,用戶可以使用函數(shù)GPIO_Write來實現(xiàn)對ARM處理器GPIO端口多引腳的寫數(shù)據(jù)操作。用戶可以通過下面的代碼對函數(shù)GPIO_Write的具體使用方法進(jìn)行了解。該代碼的主要功能是將GPIOA端口中的引腳設(shè)置為0x1101,即寫數(shù)據(jù)0x1101操作。第1行://WritedatatoGPIOAport第2行:GPIO_Write(GPIOA,0x1101);385.2GPIO接口模塊函數(shù)GPIO_PinRemapConfig在STM32標(biāo)準(zhǔn)函數(shù)庫中,用戶可以使用函數(shù)GPIO_PinRemapConfig來實現(xiàn)對ARM處理器GPIO端口的復(fù)用功能進(jìn)行設(shè)置。用戶可以通過下面的代碼對GPIO_PinRemapConfig的具體使用方法進(jìn)行了解。該代碼的主要功能是將GPIOB端口中的第8引腳復(fù)用為I2C1_SCL功能,同時將GPIOB端口中的第9引腳復(fù)用為I2C1_SDA。第1行://RemapI2C1_SCLonPB.08,I2C1_SDAonPB.09第2行:GPIO_PinRemapConfig(GPIO_Remap_I2C1,ENABLE);395.2GPIO接口模塊

405.2GPIO接口模塊GPIO參考資料STM32中文參考手冊8通用和復(fù)用功能I/O(GPIO和AFIO)STM32固件庫使用手冊的中文翻譯版10通用輸入/輸出〔GPIO〕在ARM嵌入式系統(tǒng)中,用戶可以使用兩種不同的方式實現(xiàn)對GPIO端口引腳的操作。對于不同的管腳類型,特別是不同的ARM處理器類型,應(yīng)該當(dāng)根據(jù)GPIO端口引腳的內(nèi)部結(jié)構(gòu)選擇適宜的硬件電路。415.2GPIO接口模塊5.2.4GPIO的硬件電路無需上拉電阻的GPIO驅(qū)動STM32F103XX系列ARM處理器使用灌電流的方式驅(qū)動LED發(fā)光二極管。從電路原理圖中可以看出,GPIO端口在驅(qū)動LED發(fā)光二極管時,必須將PA.0管腳設(shè)置為數(shù)據(jù)輸出模式,如右圖。GPIO驅(qū)動LED〔灌電流〕425.2GPIO接口模塊除此之外,用戶還可以使用推電流的方式來驅(qū)動外部LED發(fā)光二極管,其根本的工作原理與灌電流驅(qū)動類似,具體硬件電路如右圖。GPIO驅(qū)動LED〔推電流〕435.2GPIO接口模塊需要上拉電阻的GPIO驅(qū)動當(dāng)GPIO端口引腳作為信號輸入端口時,由于內(nèi)部結(jié)構(gòu)沒有集成上拉電阻,所以在外部硬件電路設(shè)計過程中,需要加上一個10K的上拉電阻,將GPIO端口引腳拉到高電平。GPIO鍵盤輸入

445.2GPIO接口模塊GPIO參考資料STM32中文參考手冊STM32固件庫使用手冊的中文翻譯版455.2GPIO接口模塊5.2.5根底實驗一:汽車平安帶報警指示燈與蜂鳴器實驗在汽車行駛過程中,平安帶對駕駛員及其乘客起到重要的保護(hù)作用。但局部乘客,特別是非駕駛員乘客,在乘坐汽車的過程中都容易疏忽平安帶的使用。因此,在車輛起步前,檢查平安帶的工作狀態(tài)并及時作出報警指示具有重要的意義。實驗內(nèi)容分析硬件電路設(shè)計軟件代碼設(shè)計:教材P176,軟件代碼補(bǔ)充實驗及擴(kuò)展46AD模數(shù)模塊〔Analog-to-DigitalConverter〕,模擬/數(shù)字轉(zhuǎn)換器,主要功能是將連續(xù)變量的模擬信號轉(zhuǎn)換為離散的數(shù)字信號。由于ARM只能處理數(shù)字信號,因此,在對外部的模擬信號進(jìn)行分析、處理的過程中,必須使用ADC模塊將外部的模擬信號轉(zhuǎn)換成ARM所能處理的數(shù)字信號。第五章STM32F103XX功能模塊5.3ADC模數(shù)轉(zhuǎn)換模塊475.3ADC模數(shù)轉(zhuǎn)換模塊5.3.1ADC概述

在ARM處理器STM32F103VB中,系統(tǒng)內(nèi)部集成了2個內(nèi)部12bit的模擬數(shù)字轉(zhuǎn)換器ADC,每一個ADC共用16個外部通道,可實現(xiàn)單次模數(shù)轉(zhuǎn)換或掃描模數(shù)轉(zhuǎn)換。對于處理器STM32F103VB中的模數(shù)轉(zhuǎn)換器,其ADC接口上的主要邏輯功能包括:同步采樣和保持功能;交叉采樣和保持功能;單次采樣功能;

485.3ADC模數(shù)轉(zhuǎn)換模塊5.3.1ADC概述ADC主要特征●12位分辨率●各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行●自校準(zhǔn)●帶內(nèi)嵌數(shù)據(jù)一致性的數(shù)據(jù)對齊,ADC的結(jié)果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)存放器中?!癫蓸娱g隔可以按通道分別編程●規(guī)那么轉(zhuǎn)換和注入轉(zhuǎn)換均有外部觸發(fā)選項●雙重模式(帶2個或以上ADC的器件)495.3ADC模數(shù)轉(zhuǎn)換模塊5.3.1ADC概述ADC主要特征●ADC轉(zhuǎn)換時間:─STM32F103xx增強(qiáng)型產(chǎn)品:時鐘為56MHz時為1μs(時鐘為72MHz為1.17μs)●ADC供電要求:2.4V到3.6V,不建議直接使用電源電壓●ADC輸入范圍:VREF-≤VIN≤VREF+●規(guī)那么通道轉(zhuǎn)換期間有DMA請求產(chǎn)生。為了到達(dá)更快的傳輸速率,STM32F103VB處理器ADC支持DMA〔直接內(nèi)存存取操作〕,由于數(shù)據(jù)在系統(tǒng)內(nèi)部存儲地址之間直接進(jìn)行傳輸,因此可以在很大程度上提高數(shù)據(jù)轉(zhuǎn)換速度。505.3ADC模數(shù)轉(zhuǎn)換模塊5.3.2ADC管腳描述在STM32F103VB中,除了基準(zhǔn)電壓輸入引腳〔VREF+和VREF-〕外,不存在特定的直接用于AD轉(zhuǎn)化的管腳,都是采用管腳復(fù)用功能實現(xiàn)對模擬信號的處理。注意:當(dāng)用戶將模擬輸入信號連接到ADC模塊引腳上時,需要將模塊對應(yīng)的引腳設(shè)置為“模擬信號輸入模式”515.3ADC模數(shù)轉(zhuǎn)換模塊5.3.3ADC存放器

525.2ADC模數(shù)轉(zhuǎn)換模塊5.3.4ADC庫函數(shù)在嵌入式開發(fā)系統(tǒng)中,用戶對STM32F103VB處理器ADC的操作,需要使用ST公司提供的標(biāo)準(zhǔn)函數(shù)庫。535.3ADC模數(shù)轉(zhuǎn)換模塊5.3.4ADC庫函數(shù)在AD轉(zhuǎn)換器硬件電路設(shè)計過程中,輸入電壓原那么上不可以超過芯片供電電壓。在前面的內(nèi)容中也向讀者介紹過在條件允許的情況下,盡量防止直接將電源電壓直接連接到AD轉(zhuǎn)換器的參考電壓輸入端,以防止電源信號的帶來的干擾。因此,用戶需要設(shè)計更為精準(zhǔn)的參考電壓電路為芯片的AD轉(zhuǎn)換提供穩(wěn)定的基準(zhǔn)電壓。545.3ADC模數(shù)轉(zhuǎn)換模塊5.3.4ADC硬件電路TL431基準(zhǔn)電壓〔1〕可編程基準(zhǔn)電壓輸出,最高可達(dá)36V;〔2〕電壓參考源輸出誤差典型值為±0.4%〔25℃〕;〔3〕較低的動態(tài)輸出阻抗,典型值為0.22Ω;〔4〕具有1mA~100mA的灌電流能力;〔5〕典型值為50ppm/℃的等效全范圍溫度系統(tǒng);〔6〕在整個額定工作溫度范圍內(nèi)可進(jìn)行輸出電壓溫度補(bǔ)償;〔7〕較低的輸出噪聲電壓;555.3ADC模數(shù)轉(zhuǎn)換模塊模擬數(shù)字信號隔離電路

如果在高速模數(shù)轉(zhuǎn)換器(ADC)和混合信號電路及系統(tǒng)中采用了不正確的接地方法,當(dāng)數(shù)字回流(地電流)進(jìn)入模擬電路局部時,就會引起過多噪聲,降低ADC轉(zhuǎn)換的精度。信號隔離的目的在于從電路上把干擾源和易受干擾的局部隔離開來,使測控裝置與現(xiàn)場僅保持信號聯(lián)系,而不直接發(fā)生信號之間的聯(lián)系。隔離的實質(zhì)是把引進(jìn)的干擾通道切斷,從而到達(dá)隔離現(xiàn)場干擾的目的。565.3ADC模數(shù)轉(zhuǎn)換模塊575.3ADC模數(shù)轉(zhuǎn)換模塊5.3.5根底實驗二:汽車發(fā)動機(jī)水溫測量系統(tǒng)實驗隨著汽車行業(yè)的不斷開展,汽車上電器設(shè)備數(shù)據(jù)日益增多,使得發(fā)動機(jī)的功率也逐步增大,發(fā)動機(jī)產(chǎn)生的熱量也不斷升高。如果不能處理好發(fā)動機(jī)的冷卻降溫問題,將影響到汽車的動力性能,所以對發(fā)動機(jī)水溫的監(jiān)測是非常重要的。溫度的測量實驗內(nèi)容分析硬件電路設(shè)計軟件代碼設(shè)計,P201程序代碼補(bǔ)充實驗及擴(kuò)展

585.3ADC模數(shù)轉(zhuǎn)換模塊GPIO參考資料STM32中文參考手冊

11模擬/數(shù)字轉(zhuǎn)換(ADC)STM32固件庫使用手冊的中文翻譯版

4.模擬/數(shù)字轉(zhuǎn)換器59在STM32F103XX系列處理器中,系統(tǒng)內(nèi)置嵌套的向量式中斷控制器NVIC,能夠處理多達(dá)43個可屏蔽中斷通道〔不包含15個Cortex-M3的中斷線〕和16個優(yōu)先級,具體參數(shù)特性如下所示:〔1〕支持43個可屏蔽的中斷通道〔2〕支持16個可編程的中斷優(yōu)先級〔采用4位中斷優(yōu)先級〕〔3〕具有極低的延時異常和中斷處理功能〔4〕支持對系統(tǒng)電源的中斷管理控制〔5〕支持中斷尾部鏈接功能〔6〕自動保存當(dāng)前處理器的狀態(tài)〔7〕中斷返回時自動回復(fù)系統(tǒng)中斷初始狀態(tài),無需任何額外指令開銷第五章STM32F103XX功能模塊5.4EXTI中斷模塊605.4EXTI中斷模塊5.4.1外部中斷/事件的分類在STM32F103XX系列處理器中,系統(tǒng)支持了各種不同類型的中斷形式,且不同中斷的各個特征參數(shù),如優(yōu)先級、中斷地址等,也各不相同。教材P208,表5.41來查看系統(tǒng)所支持的中斷類型。外部中斷/事件控制器包含了19個邊沿檢測器,且STM32F103XX處理器中多達(dá)80個通用IO端口可以被直接映射到這19個外部中斷線,每一個中斷線都可以獨立的配置觸發(fā)事件,并且能夠單獨的被系統(tǒng)屏蔽。其中,系統(tǒng)還提供了一個掛起存放器維持所有中斷請求的狀態(tài)。615.4EXTI中斷模塊5.4.2外部中斷/事件的結(jié)構(gòu)外部中斷/事件控制器EXTI的主要特性如下所示:〔1〕每根外部中斷/事件輸入線上均可獨立觸發(fā)和屏蔽〔2〕每根外部中斷/事件輸入線都具有專門的狀態(tài)標(biāo)志位〔3〕最多可產(chǎn)生19個軟件事件/中斷請求〔4〕可捕獲脈寬低于APB時鐘的外部信號625.4EXTI中斷模塊外部中斷/事件控制器結(jié)構(gòu)STM32處理器中某一條外部中斷線或外部事件線的信號結(jié)構(gòu)圖:圖中虛線標(biāo)出了外部中斷信號的傳輸路徑。外部中斷/事件信號從芯片管腳1輸入,經(jīng)過邊沿檢測電路2后,通過或門3進(jìn)入中斷“掛起請求存放器”,最后經(jīng)過與門4將外部信號輸出到NVIC中斷控制器。635.4EXTI中斷模塊5.4.3外部中斷/事件的執(zhí)行順序與嵌套通常情況下,外部中斷/事件的處理可以分為以下4個過程,具體如下所示:中斷請求和優(yōu)先級中斷的響應(yīng)中斷的處理中斷的返回645.4EXTI中斷模塊5.4.4外部中斷/事件的選擇在STM32F103VB處理器中,系統(tǒng)能夠處理外部時間或者內(nèi)部事件以喚醒內(nèi)核WFE,通過配置外部線路,任意的IO端口、RTC鬧鐘以及USB喚醒等事件都可以用來喚醒休眠狀態(tài)的CPU,即從WFE退出。655.4EXTI中斷模塊5.4.3外部中斷/事件的執(zhí)行順序與嵌套中斷的產(chǎn)生:要產(chǎn)生中斷,必須先配置好并使能中斷線。根據(jù)需要的邊沿檢測設(shè)置2個觸發(fā)存放器,同時在中斷屏蔽存放器的相應(yīng)位寫’1’允許中斷請求。當(dāng)外部中斷線上發(fā)生了期待的邊沿時,將產(chǎn)生一個中斷請求,對應(yīng)的掛起位也隨之被置’1’。在掛起存放器的對應(yīng)位寫’1’,將去除該中斷請求。665.4EXTI中斷模塊5.4.3外部中斷/事件的執(zhí)行順序與嵌套硬件中斷的選擇配置中斷線的屏蔽位(EXTI_IMR)配置所選中斷線的觸發(fā)選擇位(EXTI_RTSR和EXTI_FTSR);配置對應(yīng)到外部中斷控制器(EXTI)的NVIC中斷通道的使能和屏蔽位,使中斷線中的請求可以被正確地響應(yīng)。

675.4EXTI中斷模塊5.4.3外部中斷/事件的執(zhí)行順序與嵌套硬件事件的選擇配置事件線的屏蔽位(EXTI_EMR)配置事件線的觸發(fā)選擇位(EXTI_RTSR和EXTI_FTSR)軟件中斷/事件的選擇配置中斷/事件線屏蔽位(EXTI_IMR,EXTI_EMR)設(shè)置軟件中斷存放器的請求位(EXTI_SWIER)685.4EXTI中斷模塊5.4.3外部中斷/事件的執(zhí)行順序與嵌套外部中斷/事件線路映像80通用I/O端口連接到19個外部中斷/事件線上:。。。另外三種其他的外部中斷/事件控制器的連接如下:

EXTI線16連接到PVD輸出

EXTI線17連接到RTC鬧鐘事件

EXTI線18連接到USB喚醒事件695.4EXTI中斷模塊5.4.5外部中斷/事件存放器EXTI存放器的參數(shù)是通過結(jié)構(gòu)體的方式來描述的。EXTI_TypeDef,在文件“stm32f10x_map.h”中定義如下:Typedefstruct{vu32IMR;vu32EMR;vu32RTSR;vu32FTSR;vu32SWIER;vu32PR;}EXTI_TypeDef;705.4EXTI中斷模塊存放器功能及描述在下面的內(nèi)容中,選擇上述函數(shù)庫中局部常用的函數(shù)進(jìn)行簡單的介紹,使得用戶對這些函數(shù)的具體使用方法有一定的了解。

函數(shù)EXTI_DeInit函數(shù)EXTI_Init函數(shù)EXTI_GenerateSWInterrupt函數(shù)EXTI_GetFlagStatus函數(shù)EXTI_ClearFlag函數(shù)EXTI_GetITStatus函數(shù)EXTI_ClearITPendingBit715.4EXTI中斷模塊725.4EXTI中斷模塊5.4.6外部中斷/事件硬件電路外部中斷/事件都可以通過GPIO端口中的引腳進(jìn)行輸入,可以分為2種觸發(fā)類型:電平觸發(fā)所謂邊沿觸發(fā),是指電平從高到低跳變(負(fù)跳變)或從低到高跳變(正跳變)時才發(fā)生觸發(fā);邊沿觸發(fā)電平觸發(fā)是指只有高電平〔或者低電平〕的時候才產(chǎn)生。觸發(fā)電路為了確保外部中斷/事件能夠產(chǎn)生嚴(yán)格的觸發(fā)波形,一般使用按鍵的方式產(chǎn)生相應(yīng)的外部中斷。觸發(fā)電路主要有低電平(下降沿)觸發(fā)與高電平(上升沿)觸發(fā)兩種,如右圖所示。735.4EXTI中斷模塊上升沿觸發(fā)與下降沿觸發(fā)電路在汽車行駛的過程中,經(jīng)常會遇到緊急制動的情況。對于汽車制動而言,需要具有嚴(yán)格的實時性要求。因此,在汽車緊急制動過程中,可以使用中斷的方式來模擬汽車的緊急制動信號,如右圖所示。745.4EXTI中斷模塊5.4.6根底實驗三:汽車緊急制動實驗汽車制動系統(tǒng)原理755.4EXTI中斷模塊試驗主要有以下幾個流程:實驗內(nèi)容分析硬件電路設(shè)計軟件代碼設(shè)計,P224-228程序代碼補(bǔ)充實驗及擴(kuò)展

765.4EXTI中斷模塊EXIT參考資料STM32中文參考手冊STM32固件庫使用手冊的中文翻譯版77在STM32F103XX增強(qiáng)型系列產(chǎn)品中,芯片包含了:1個高級控制定時器TIM13個通用定時器TIM2、TIM3、TIM4、2個看門狗定時器:獨立看門狗、窗口看門狗1個系統(tǒng)時基定時器第五章STM32F103XX功能模塊5.5高級控制定時器TIM178第五章STM32F103XX功能模塊定時器計數(shù)器分辨率計數(shù)器類型預(yù)分頻系數(shù)產(chǎn)生DMA請求捕獲/比較通道互補(bǔ)輸出TIM116位向上,向下,向上/向下1-65536之間的任意數(shù)可以4有TIM2TIM3TIM416位向上,向下,向上/向下1-65536之間的任意數(shù)可以4沒有系統(tǒng)定時器功能比較對于一個定時器而言要做到精確定時需要關(guān)注2個內(nèi)容:1.預(yù)分頻器2.定時計數(shù)器的值795.5高級控制定時器TIM15.5.1TIM1的結(jié)構(gòu)特性16位向上、向下、向上/下自動裝載計數(shù)器16位可編程(可以實時修改)預(yù)分頻器,計數(shù)器時鐘頻率的分頻系數(shù)為1~65535之間的任意數(shù)值多達(dá)4個獨立通道:─輸入捕獲─輸出比較─PWM生成(邊緣或中間對齊模式)─單脈沖模式輸出死區(qū)時間可編程的互補(bǔ)輸出使用外部信號控制定時器和定時器互聯(lián)的同步電路允許在指定數(shù)目的計數(shù)器周期之后更新定時器存放器的重復(fù)計數(shù)器剎車輸入信號可以將定時器輸出信號置于復(fù)位狀態(tài)或者一個狀態(tài)805.5高級控制定時器TIM15.5.1TIM1的結(jié)構(gòu)特性如下事件發(fā)生時產(chǎn)生中斷/DMA:─更新:計數(shù)器向上溢出/向下溢出,計數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā))─觸發(fā)事件(計數(shù)器啟動、停止、初始化或者由內(nèi)部/外部觸發(fā)計數(shù))─輸入捕獲,輸出比較,剎車信號輸入支持針對定位的增量(正交)編碼器和霍爾傳感器電路觸發(fā)輸入作為外部時鐘或者按周期的電流管理815.5高級控制定時器TIM1

高級控制定時器TIM1框圖825.5高級控制定時器TIM15.5.2TIM1的功能除了具有通用定時器TIMx具有的定時功能外,還具備一些高級控制定時的功能:時基單元:計數(shù)器存放器(TIM1_CNT)預(yù)分頻器存放器(TIM1_PSC)自動裝載存放器(TIM1_ARR)重復(fù)計數(shù)存放器(TIM1_RCR)835.5高級控制定時器TIM15.5.2TIM1的功能計數(shù)器模式:向上計數(shù)模式,計數(shù)器從0計數(shù)到自動加載值(TIMx_ARR計數(shù)器內(nèi)容),然后重新從0開始計數(shù)并且產(chǎn)生一個計數(shù)器溢出事件。向下計數(shù)模式,計數(shù)器從自動裝入的值(TIMx_ARR)開始向下計數(shù)到0,然后從自動裝入的值重新開始,并產(chǎn)生一個計數(shù)器向下溢出事件。中央對齊模式〔向上/向下計數(shù)〕,計數(shù)器從0開始計數(shù)到自動裝入的值-1,產(chǎn)生一個計數(shù)器溢出事件,然后向下計數(shù)到1并且產(chǎn)生一個計數(shù)器溢出事件;然后再從0開始重新計數(shù)。845.5高級控制定時器TIM15.5.2TIM1的功能計數(shù)器模式:重復(fù)計數(shù)器〔循環(huán)向下計數(shù)模式〕:重復(fù)計數(shù)器在下述任一條件成立時遞減:●向上計數(shù)模式下每次計數(shù)器溢出時,●向下計數(shù)模式下每次計數(shù)器下溢時,●中央對齊模式下每次上溢和每次下溢時855.5高級控制定時器TIM15.5.2TIM1的功能時鐘來源:內(nèi)部時鐘(CK_INT)外部時鐘模式1:外部輸入腳(TIx)外部時鐘模式2:外部觸發(fā)輸入(ETR)內(nèi)部觸發(fā)輸入(ITRx):使用一個定時器作為另一個定時器的預(yù)分頻器,如可以配置一個定時器Timer1而作為另一個定時器Timer2的預(yù)分頻器865.5高級控制定時器TIM15.5.3TIM1的控制存放器高級控制定時器TIM1存放器的根本結(jié)構(gòu)和用法

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論