基于STM32 ARM處理器的編程技術(shù)第2章 STM32應(yīng)用基礎(chǔ)_第1頁
基于STM32 ARM處理器的編程技術(shù)第2章 STM32應(yīng)用基礎(chǔ)_第2頁
基于STM32 ARM處理器的編程技術(shù)第2章 STM32應(yīng)用基礎(chǔ)_第3頁
基于STM32 ARM處理器的編程技術(shù)第2章 STM32應(yīng)用基礎(chǔ)_第4頁
基于STM32 ARM處理器的編程技術(shù)第2章 STM32應(yīng)用基礎(chǔ)_第5頁
已閱讀5頁,還剩131頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章 STM32應(yīng)用基礎(chǔ)第2章

STM32應(yīng)用基礎(chǔ)STM32系列處理器選型指南STM32系列處理器內(nèi)部結(jié)構(gòu)STM32系列處理器的電源管理STM32系列處理器的時鐘系統(tǒng)STM32系列處理器的存儲結(jié)構(gòu)與映射第2章 STM32應(yīng)用基礎(chǔ)2.1

STM32系列處理器選型指南2.1.1

STM32系列處理器的命名規(guī)則STM32系列處理器的命名由9段信息組成。其命名規(guī)則如圖2.1所示。第2章 STM32應(yīng)用基礎(chǔ)圖2.1

STM32系列處理器的命名規(guī)則第2章 STM32應(yīng)用基礎(chǔ)2.1.2

STM32系列處理器的選型目前STM32系列處理器中已經(jīng)包含了多個子系列,其中有:STM32F101XX系列單片機、STM32F102XX系列處

理器、STM32F103XX系列處理器、STM32F105XX系列處

理器、STM32F107XX系列處理器。根據(jù)系統(tǒng)對硬件資源的實際需求進行STM32處理器的選型操作。在表2.1、表2.2、表2.3中,選取了STM32系列處理器常用型號、引腳、封裝、接口和特性等參數(shù),以供用戶查閱和選型。第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)2.1.3

STM32系列處理器的引腳信息STM32系列處理器雖然在硬件資源上類似,但在引腳排列及封裝上并不完全一致。在系統(tǒng)硬件構(gòu)建中(尤其在

PCB電路板的設(shè)計中),除原理功能的設(shè)計外,對封裝的了解尤為重要。典型的有LQFP48、LQFP64、LQFP100、

LQFP144、VFQFPN36、BGA100、BGA144等,圖2.2、圖2.3列出了STM32常用器件外型封裝與尺寸。第2章 STM32應(yīng)用基礎(chǔ)圖2.2

STM32常用的4種外型封裝圖第2章 STM32應(yīng)用基礎(chǔ)圖2.3

STM32常用的3種外型封裝圖第2章 STM32應(yīng)用基礎(chǔ)通常,STM32處理器中的引腳絕大部分都可復(fù)用(即I/O功能和其他功能共同復(fù)用一個引腳),對于數(shù)字接口大部分可容忍5V電壓的上限,但作為模擬信號輸入的引腳則最高不得超過3.3V電壓。因此,在進行ADC操作的電路設(shè)計中,需要特別注意。在應(yīng)用中,除了處理器封裝的差異外,同一款型號的處理器芯片也可能存在不同的引腳數(shù)目,對于產(chǎn)品的設(shè)計不僅要了解封裝,還要了解同一種型號不同封裝的引腳功能和定義(附錄圖A1~圖A7是常用7種器件引腳排列)。表2.4列出了STM32F103xx系列處理器引腳功能與定義。第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)注:(1)WKUP/USART2_CTS,ADC123_IN0,TIM2_CH1_ETR,TIM5_CH1,TIM8_ETR;USART2_RTS,ADC123_IN1,TIM5_CH2,TIM2_CH2;USART2_TX,TIM5_CH3,ADC123_IN2,TIM2_CH3;USART2_RX,TIM5_CH4,ADC123_IN3,TIM2_CH4;SPI1_NSS,USART2_CK,DAC_OUT1,ADC12_IN4;SPI1_SCK,DAC_OUT2,

ADC12_IN5;SPI1_MISO,TIM8_BKIN,DC12_IN6,TIM3_CH1;SPI1_MOSI,TIM8_CH1N,ADC12_IN7;ADC12_IN8,TIM3_CH3,TIM8_CH2N;ADC12_IN9,TIM3_CH4,TIM8_CH3N;I2C2_SCL,USART3_TX;I2C2_SDA,USART3_RX;SPI2_NSS,I2S2_WS,I2C2_SMBA,USART3_CK,TIM1_BKIN;SPI2_SCK/I2S2_CK,USART3_CTS,TIM1_CH1N;SPI2_MISO,TIM1_CH2N,USART3_RTS;SPI2_MOSI,I2S2_SD,TIM1_CH3N;I2S2_MCK,TIM8_CH1,SDIO_D6;I2S3_MCK,TIM8_CH2,SDIO_D7;第2章 STM32應(yīng)用基礎(chǔ)USART1_CK,TIM1_CH1,MCO;USART1_TX,TIM1_CH2;USART1_RX,TIM1_CH3;USART1_CTS,USBDM,CAN_RX,TIM1_CH4;USART1_RTS,USBDP,CAN_TX,TIM1_ETR;SPI3_NSS,I2S3_WS;TIM2_CH1_ETR,PA15,SPI1_NSS;TIM3_ETR,UART5_RX,SDIO_CMD;FSMC_NCE4_1,F(xiàn)SMC_NE3;SPI3_SCK,I2S3_CK;PB3,TRACESWO,TIM2_CH2,SPI1_SCK;PB4,TIM3_CH1,SPI1_MISO;I2C1_SMBA,SPI3_MOSI,I2S3_SD;TIM3_CH2,SPI1_MOSI;I2C1_SCL,TIM4_CH1;I2C1_SDA,F(xiàn)SMC_NADV,TIM4_CH2;TIM4_CH3,SDIO_D4;I2C1_SCL,CAN_RX;TIM4_CH4,SDIO_D5;I2C1_SDA,CAN_TX;第2章 STM32應(yīng)用基礎(chǔ)2.2

STM32系列處理器內(nèi)部結(jié)構(gòu)STM32(CM3)是32位微處理器,即它的數(shù)據(jù)總線寬度是32位。在STM32系列ARM處理器中,包含一個支持JTAG仿真的Cortex-M3處理器、與片內(nèi)的存儲控制器接口的局部總線、與中斷控制器接口的高性能總線AHB

(Advanced

High

performance

Bus)和連接片內(nèi)外設(shè)功能的VLSI外設(shè)總線VPB

(VLSI

Peripheral

Bus)。除了中斷控制器DMA以外,其余都連接到了VPB總線上。通常STM32系列處理器的系統(tǒng)主要包括以下幾部分。5個驅(qū)動單元。分別為Cortex-M3內(nèi)核指令總線I-bus、數(shù)據(jù)總線D-bus、系統(tǒng)總線S-bus、外部專用外設(shè)總線和內(nèi)部專用外設(shè)總線。3個被動單元。分別為內(nèi)部SRAM、內(nèi)部閃存存儲器以及AHB到APB橋。該橋主要用來連接所有的APB設(shè)備。第2章 STM32應(yīng)用基礎(chǔ)I-bus總線是32位的AHB總線,對程序存儲器空間

(0x00000000~0x1FFFFFFF)的取指和取向量在此總線上完成。所有取指都是按字來操作的,每個字的取指數(shù)目取決于運行的代碼和存儲器中代碼的對齊情況。D-bus總線是32位的AHB總線,對程序存儲器空間(0x00000000~0x1FFFFFFF)的取數(shù)據(jù)和調(diào)試訪問在此總線上完成。數(shù)據(jù)訪問的優(yōu)先級比調(diào)試訪問要高,因此當總線上同時出現(xiàn)內(nèi)核訪問和調(diào)試訪問時,必須在內(nèi)核訪問結(jié)束后才開始調(diào)試訪問。第2章 STM32應(yīng)用基礎(chǔ)S-bus系統(tǒng)總線是32位的AHB總線,對系統(tǒng)存儲空間(0x20000000~0xDFFFFFFF,0xE0100000~0xFFFFFFFF)的取指、取向量及數(shù)據(jù)和調(diào)試訪問在此總線上完成。系統(tǒng)總線用于訪問內(nèi)存和外設(shè),覆蓋的區(qū)域包括SRAM、片上外設(shè)、片外RAM、片外擴展設(shè)備及系統(tǒng)級存儲區(qū)的部分空間。系

統(tǒng)總線包含處理不對齊訪問、FPB重新映射訪問、bit-band訪問及流水線取指的控制邏輯。外部專用外設(shè)總線是APB總線,對STM32處理器外設(shè)存儲空間(0xE0040000~0xE00FFFFF)的取數(shù)據(jù)和調(diào)試訪問在此總線上完成。該總線用于STM32外部的APB設(shè)備、嵌入式跟蹤宏單元(ETM)、跟蹤端口接口單元(TPIU)和ROM表,也用于片外外設(shè)。第2章 STM32應(yīng)用基礎(chǔ)內(nèi)部專用外設(shè)總線是AHB總線,對CM3處理器內(nèi)部外設(shè)存儲

空間(0xE0000000~0xE003

FFFF)的取數(shù)據(jù)和調(diào)試訪問在此總線上完成。該總線用于訪問嵌套向量中斷控制器(NVIC)、數(shù)據(jù)觀察和觸發(fā)(DWT)、Flash修補和斷點(FPB)及存儲器保護單元(MPU)。STM32F103xC/D/E系列處理器的總體結(jié)構(gòu)如圖2.4所示。內(nèi)部總線和兩條APB總線將片上系統(tǒng)和外部設(shè)備資源緊密連接起來,其中內(nèi)部總線是主系統(tǒng)總線,連接了CPU、存儲器和系統(tǒng)時鐘信

號。APB2總線連接高速外設(shè),APB1總線連接較低速外設(shè)。在APB2總線下有通用數(shù)字輸入/輸出端口PA[15:0]、PB[15:0]、PC[15:0]、PD[15:0]、PE[15:0]、PF[15:0]、PG[15:0]、定時計數(shù)器TIM1、定時計數(shù)器TIM8、高速SPI1、高速異步通信USART1、12位模數(shù)轉(zhuǎn)換器ADC1、ADC2、ADC3和溫度傳感器等接口。第2章 STM32應(yīng)用基礎(chǔ)在APB1總線下有備份接口、定時計數(shù)器TIM2、定時計數(shù)器TIM3、定時計數(shù)器TIM4、定時計數(shù)器TIM5、定時計數(shù)器TIM6、定時計數(shù)器TIM7、異步通信USART2、異步通信USART3、異步通信USART4、異步通信UART5、SPI2/I2S2、SPI3/I2S3、I2C1、I2C2、CAN總線、USB

2.0、12位數(shù)模轉(zhuǎn)換器DAC1、12位數(shù)模轉(zhuǎn)換器DAC2和WDG看門狗定時器等接口。在STM32F103xx系列處理器的I/O口中,絕大部分引腳都可以復(fù)用(見圖2.4中的A、F)。第2章 STM32應(yīng)用基礎(chǔ)圖2.4

STM32F103xC/D/E內(nèi)部結(jié)構(gòu)第2章 STM32應(yīng)用基礎(chǔ)2.3

STM32系列處理器的電源管理STM32系列處理器除超強的處理能力和多功能以外,

為了降低整個芯片的功耗和提高器件抗干擾能力,其內(nèi)部不同的功能電路模塊采用不同的電源設(shè)計和管理方式。2.3.1電源結(jié)構(gòu)STM32處理器電源結(jié)構(gòu)由模擬部分、數(shù)字部分和備用部分組成,如圖2.5所示。圖中VDDA和VSSA、VREF+和VREF-是模擬電源部分,VDD和VSS是數(shù)字電源部分,VBAT是備份電源部分。第2章 STM32應(yīng)用基礎(chǔ)圖2.5

STM32處理器電源結(jié)構(gòu)第2章 STM32應(yīng)用基礎(chǔ)1.模擬電源為了提高A/D轉(zhuǎn)換精度,ADC使用一個獨立的電源電路,通過電路中的濾波器和屏蔽措施可去除來自PCB板上的毛刺干擾。VSSA為獨立的模擬電源地,VDDA范圍為2.0~3.6

V。供電區(qū)域是:ADC電路、復(fù)位模塊電路、RC振蕩器和PLL模塊的模擬電路。當VDD大于2.4V時,ADC工作;當VDD大于2.7

V時,USB工作。VREF+電壓范圍為2.4V至VDDA之間,可以連接到VDDA外部電源上。如果VREF+采用獨立的外部參考電壓,最好在VREF+

和VREF-引腳上連接一個高頻濾波小電容。第2章 STM32應(yīng)用基礎(chǔ)2.數(shù)字電源VDD的電源范圍是2.0~3.6

V。通常用+3.3

V的電源為I/O接口等電路供電。內(nèi)置電壓調(diào)節(jié)器可為CPU內(nèi)核(CM3處理器)提供所

需的+1.8

V高精度電源,即把外電源提供的3.3

V轉(zhuǎn)換成1.8

V。電壓調(diào)節(jié)器主要有3種工作模式。在運行模式下,為處理器、內(nèi)存和外設(shè)提供+1.8

V電源,此模式也稱主模式(MR)。在該模式下,可以通過降低系統(tǒng)時鐘,或者關(guān)閉APB和AHB總線上未被使用的時鐘來降低功耗。在停止模式下,選擇性地提供1.8

V電源可為某些模塊分時供電,如為寄存器和SRAM供電以保存其中的數(shù)據(jù)。此種模式也稱為電壓調(diào)節(jié)器的低功耗模式(LPR)。在待機模式下,可切斷處理器電路的供電,即調(diào)壓器的輸出為高阻狀態(tài)(處于零消耗關(guān)閉狀態(tài))。除備用電路外,寄存器和SRAM的內(nèi)容全部丟失。此種模式也稱關(guān)斷模式。第2章 STM32應(yīng)用基礎(chǔ)3.備份電源備份電源是備份域使用的供電電源,也就是為VBAT引腳的供電電源,可使用電池或其他電源連接到VBAT腳上。VBAT為1.8~3.6

V。當主電源VDD斷電時,為RTC、外部32kHz振蕩器和后備寄存器供電。如果沒有連接外部電源(電池),這個引腳必須連接一個高頻小電容到VDD電源上。當使用VDD時,VBAT上無電流損失。第2章 STM32應(yīng)用基礎(chǔ)2.3.2電源電壓監(jiān)視在STM32處理器電源管理模式中,有一個可編程電源

監(jiān)測器(PVD)。該部分可編程監(jiān)測VDD電源與PVD閾值(見圖

2.6)并進行比較,當VDD低于或高于PVD閾值時,可產(chǎn)生中

斷請求信號,通過對中斷事件的處理可發(fā)出警告信息或?qū)⑻幚砥鬓D(zhuǎn)入安全模式。PVD的控制是通過對電壓與電源控制寄存器(PWR_CR)的設(shè)置來完成的。第2章 STM32應(yīng)用基礎(chǔ)圖2.6

PVD閾值示意圖第2章 STM32應(yīng)用基礎(chǔ)2.3.3復(fù)位電路1.系統(tǒng)復(fù)位系統(tǒng)復(fù)位將復(fù)位除時鐘控制器CSR中的復(fù)位標志和備用寄存器外的所有寄存器。當有下列事件中的一個發(fā)生時都將產(chǎn)生系統(tǒng)復(fù)位。其復(fù)位類型可通過查看控制/狀態(tài)寄存器(RCC-CSR,Control/StatusRegister)中的復(fù)位標志來識別復(fù)位源。(1)NRST引腳上出現(xiàn)低電平(外部復(fù)位),如圖2.7所示。其復(fù)位效果與需要的時間、處理器供電電源、復(fù)位閾值等有關(guān)。為了使其充分復(fù)位,在+3.3

V電源工作條件下,復(fù)位時間可設(shè)置為20

ms左右。在圖2.7中,復(fù)位源將最終作用于

NRST引腳,并在復(fù)位過程中保持低電平。復(fù)位入口地址(矢量)為0x00000004。第2章 STM32應(yīng)用基礎(chǔ)窗口看門狗計數(shù)溢出(WWDG復(fù)位)。獨立看門狗計數(shù)溢出(IWDG復(fù)位)。上電(POR)/掉電(PDR)復(fù)位。軟件復(fù)位(SW復(fù)位),通過設(shè)置相應(yīng)的控制寄存器位來實現(xiàn)。低功耗管理復(fù)位,進入待機模式或停止模式時引起的復(fù)位。第2章 STM32應(yīng)用基礎(chǔ)圖2.7外部復(fù)位電路第2章 STM32應(yīng)用基礎(chǔ)2.電源復(fù)位電源復(fù)位能復(fù)位除備份寄存器外的所有寄存器。當以下事件發(fā)生時,將產(chǎn)生電源復(fù)位。(1)上電/掉電復(fù)位(POR/PDR復(fù)位)。STM32集成了一個上電復(fù)位(POR)和掉電復(fù)位(PDR)電路,當供電電壓達到2

V時,系統(tǒng)就能正常工作。當VDD低于特定的閾值VPOR/PDR時,不需要外部復(fù)位電路,STM32一直處于復(fù)位模式。上電復(fù)位和掉電復(fù)位的示意圖如圖2.8所示。第2章 STM32應(yīng)用基礎(chǔ)圖2.8上電/掉電復(fù)位示意圖第2章 STM32應(yīng)用基礎(chǔ)(2)芯片內(nèi)部的復(fù)位。復(fù)位信號會在NRST引腳上輸出,脈沖發(fā)生器保證每個外部或內(nèi)部復(fù)位源都能有至少20

ms的脈沖延時;當NRST引腳被拉低產(chǎn)生外部復(fù)位時,它將產(chǎn)生復(fù)位脈沖。第2章 STM32應(yīng)用基礎(chǔ)3.備份區(qū)域復(fù)位當發(fā)生以下事件時,將產(chǎn)生備份區(qū)域復(fù)位。軟件復(fù)位。備份區(qū)域復(fù)位可通過設(shè)置備份控制寄存器(RCC_BDCR)中的BDRST位來實現(xiàn)。電源復(fù)位。在VDD和VBAT二者掉電的前提下,VDD或VBAT上電將引發(fā)備份區(qū)域復(fù)位。第2章 STM32應(yīng)用基礎(chǔ)2.3.4低功耗模式運行模式運行模式是指電壓調(diào)節(jié)器工作在正常狀態(tài);CM3處理器正常運行;CM3的內(nèi)部外設(shè)(如NVIC)正常運行;STM32的PLL、HSE、HIS時鐘正常運行。睡眠模式睡眠模式是指電壓調(diào)節(jié)器工作在正常狀態(tài);CM3處理器在停止狀態(tài),但CM3的內(nèi)部外設(shè)仍正常運行;STM32的PLL、HSE、HIS時鐘也正常運行;所有的SRAM和寄存器內(nèi)的內(nèi)容被保留,但所有的外設(shè)仍繼續(xù)運行(除非它們被關(guān)閉);所有的I/O引腳都保持它們在運行模式時的狀態(tài);此時功耗相對于正常模式有所降低。第2章 STM32應(yīng)用基礎(chǔ)3.待機模式待機模式是指電壓調(diào)節(jié)器關(guān)閉、整個1.8

V區(qū)域斷電;CM3處理器停止運行,CM3的內(nèi)部外設(shè)停止運行;STM32的PLL、HSE、HSI時鐘被關(guān)斷;SRAM和寄存器內(nèi)的內(nèi)容丟失;備份寄存器內(nèi)容保留;待機電路維持供電。第2章 STM32應(yīng)用基礎(chǔ)4.停止模式停止模式也稱為“深度睡眠模式”。電壓調(diào)節(jié)器可被置于停止模式,即選擇性地為某些模塊提供1.8

V電源;CM3處理器停止運行,CM3的內(nèi)部外設(shè)停止運行;STM32的PLL、HSE、HSI時鐘被關(guān)斷;所有的SRAM和寄存器內(nèi)的內(nèi)容被保留。當STM32處理器從以上三種低功耗模式返回到正常模式時,處理器有下列狀態(tài)。(1)當STM32處于睡眠狀態(tài)時,只有處理器停止工作,

SRAM、寄存器的值仍然保留,當前執(zhí)行狀態(tài)的信息并未丟失,因此STM32從睡眠狀態(tài)恢復(fù)后,回到進入睡眠狀態(tài)指令的后一條指令開始執(zhí)行。第2章 STM32應(yīng)用基礎(chǔ)當STM32處于停止狀態(tài)時,SRAM、寄存器的值仍然保留,因此STM32從停止狀態(tài)恢復(fù)后,回到進入停止狀態(tài)指令的后一條指令開始執(zhí)行。但不同于睡眠狀態(tài),進入停止狀態(tài)后,STM32時鐘關(guān)斷,因此從停止狀態(tài)恢復(fù)后,STM32將使用內(nèi)部高速振蕩器作為系統(tǒng)時鐘(HIS,頻率為不穩(wěn)定的8

MHz)。當STM32處于待機狀態(tài)時,所有SRAM和寄存器的值都丟失(恢復(fù)默認值),因此從待機狀態(tài)恢復(fù)后,程序重新從復(fù)位初始位置開始執(zhí)行,這相當于一次軟件復(fù)位效果。第2章 STM32應(yīng)用基礎(chǔ)2.3.5

STM32的啟動1.啟動設(shè)置在STM32F10xxx系列中,可以通過BOOT[1:0]引腳選擇3種不同啟動模式,如表2.5所示。其硬件電路連接如圖2.9所示。第2章 STM32應(yīng)用基礎(chǔ)第2章 STM32應(yīng)用基礎(chǔ)圖2.9STM32啟動電路第2章 STM32應(yīng)用基礎(chǔ)在系統(tǒng)復(fù)位后,SYSCLK的第4個上升沿到來時,BOOT引腳的值將被讀入鎖存。用戶可以通過設(shè)置BOOT1和BOOT0引腳的狀態(tài),來選擇在復(fù)位后的啟動模式。根據(jù)選定的啟動模式,主Flash存儲器、系統(tǒng)存儲器或內(nèi)置SRAM可以按照以下方式進行訪問。從主Flash存儲器啟動。主Flash存儲器被映射到啟動空間(0x0000

0000),但仍然能夠在它原有的地址(0x0800

0000)區(qū)域訪問它,即Flash存儲器的內(nèi)容可以在兩個地址區(qū)域訪問(0x0000

0000或0x0800

0000訪問)。從系統(tǒng)存儲器啟動。系統(tǒng)存儲器被映射到啟動空間(0x00000000),但仍能在其原有的地址(互聯(lián)型產(chǎn)品原有地址為0x1FFFB000,其他產(chǎn)品原有地址為0x1FFFF000)區(qū)域訪問它。第2章 STM32應(yīng)用基礎(chǔ)(3)從內(nèi)置SRAM啟動。只能在0x2000

0000開始的地址區(qū)域訪問SRAM。多數(shù)情況下,SRAM只是在調(diào)試時使用,也可

以用于其他一些用途。如做故障的局部診斷處理(寫一小段程序加載到SRAM中,診斷PCB上的其他電路是否有故障,或者用此方法讀寫PCB上的Flash存儲器或EEPROM等內(nèi)容)。還

可以通過這種方法解除內(nèi)部Flash的讀/寫保護,當然在解除讀/寫保護的同時,F(xiàn)lash的內(nèi)容也被自動清除,以防止惡意的軟件復(fù)制。當從內(nèi)置SRAM啟動時在應(yīng)用程序的初始化代碼中,必須使用NVIC的異常表和偏移寄存器,重新映射向量表(地址)到SRAM中。注意,STM32處理器在通過USART0串口下載程序時,一定要將BOOT0置為1,BOOT1置為0。當程序下載完后,要將BOOT0置為0,BOOT1置為0方能啟動程序。第2章 STM32應(yīng)用基礎(chǔ)2.啟動過程STM32的啟動代碼在startup_stm32f10x_xx.s(xx根據(jù)控制器的存儲容量大、中、小分別為hd、md、ld)中,其中的程序

功能主要包括初始化堆棧、定義程序啟動地址、中斷向量表和中斷服務(wù)程序入口地址,以及系統(tǒng)復(fù)位啟動時,從啟動代

碼跳轉(zhuǎn)到用戶main函數(shù)入口地址。嵌入式系統(tǒng)的啟動還需要

一段啟動代碼(Bootloader),類似于啟動PC時的BIOS,一般用于完成處理器的初始化和自檢。STM32處理器規(guī)定,起始地址必須存放堆頂指針,而第2個地址則必須存儲復(fù)位中斷入口向量地址,這樣在處理器復(fù)

位后,會自動從起始地址的下一個32位空間取出復(fù)位中斷入口向量,跳轉(zhuǎn)執(zhí)行復(fù)位中斷服務(wù)程序,啟動有以下三種情況。第2章 STM32應(yīng)用基礎(chǔ)通過BOOT引腳設(shè)置可以將中斷向量表定位于FLASH區(qū),即起始地址為0x8000000,同時復(fù)位后PC指針位于0x800

0000處。通過BOOT引腳設(shè)置可以將中斷向量表定位于SRAM

區(qū),即起始地址為0x200

0000,同時復(fù)位后PC指針位于0x2000000處。通過BOOT引腳設(shè)置可以將中斷向量表定位于內(nèi)置Bootloader區(qū)。第2章 STM32應(yīng)用基礎(chǔ)2.4

STM32系列處理器的時鐘系統(tǒng)STM32處理器的時鐘系統(tǒng)比較復(fù)雜,不同性能、不同

速度的電路采用了不同的時鐘信號源,如圖2.10所示。每個時鐘源在不使用時都可以單獨打開或關(guān)閉,這樣就可以控制系統(tǒng)的功耗。第2章 STM32應(yīng)用基礎(chǔ)圖2.10

STM32處理器時鐘系統(tǒng)第2章 STM32應(yīng)用基礎(chǔ)STM32的時鐘主要由以下幾個方法來獲?。篐IS(高速內(nèi)部時鐘),即RC振蕩器,時鐘頻率為8MHz。HSE(高速外部時鐘),可外接石英、陶瓷諧振器,或者接外部時鐘源頻率范圍為4~16

MHz。LSI(低速內(nèi)部時鐘),即RC振蕩器,頻率為40

kHz。LSE(低速外部時鐘),外接頻率為32.768kHz的石英晶體。PLL(鎖相環(huán)倍頻輸出),其中鎖相環(huán)的時鐘輸入源可以選擇HIS/2、HSE或者HSE/2。倍頻時鐘可以選擇2~16的整數(shù)倍,但其輸出頻率最高不得超過72

MHz。第2章 STM32應(yīng)用基礎(chǔ)其中,40

kHz的LSI供獨立看門狗IWDG使用,除此之外,還可以被選擇為實時時鐘RTC的時鐘源。通常,實時時鐘RTC的時鐘源還可以選擇LSE或者HSE的128分頻,用戶可以通過寄存器RTCSEL[1:0]來選擇實時時鐘RTC的時鐘源。時鐘的設(shè)置需要先考慮系統(tǒng)時鐘的來源,是內(nèi)部時鐘、外部晶振,還是外部的振蕩器,是否需要PLL;然后再考慮內(nèi)部總線和外部總線,最后考慮外設(shè)的時鐘信號。應(yīng)遵從先倍頻作為處理器的時鐘,然后再由內(nèi)向外分頻的原則。第2章 STM32應(yīng)用基礎(chǔ)2.4.1高速時鐘(HSE、HSI)1.HSE時鐘STM32系列處理器的高速HSE時鐘工作在兩種模式下:從屬模式(外接輸入時鐘源)和振蕩模式(外接振蕩電路)。在從屬模式下,輸入信號時鐘的引腳與一個100

pF的電容(C1)相連,且輸入信號時鐘的幅值應(yīng)當不小于200

mV,

OSC_OUT引腳懸空不連接,如圖2.11(a)所示。如果用戶使用時鐘的從屬模式,則輸入信號時鐘的頻率被限制在4~16

MHz。第2章 STM32應(yīng)用基礎(chǔ)此外,系統(tǒng)時鐘還可以工作在振蕩模式下,具體的電路連接如圖2.11(b)所示。由于在ARM處理器的內(nèi)部已經(jīng)集成

了一個反饋電阻,所以用戶只需要在外部連接一個晶振(JZ,

4~16

MHz)和兩個起振電容C2、C3(10~30

pF),該電容的

連接應(yīng)盡可能靠近芯片引腳,以減小失真和啟動穩(wěn)定時間。第2章 STM32應(yīng)用基礎(chǔ)圖2.11高頻時鐘(HSE)電路第2章 STM32應(yīng)用基礎(chǔ)2.HSI時鐘HSI時鐘信號由內(nèi)部8

MHz的RC振蕩器產(chǎn)生,可直接作

為系統(tǒng)時鐘或在2分頻后作為PLL輸入。HSI的RC振蕩器能

夠在不需要任何外部器件的條件下提供系統(tǒng)時鐘。它的啟動時間比HSE晶體振蕩器時間短。但是,即使在校準后,HSI的時鐘頻率精度仍較差。第2章 STM32應(yīng)用基礎(chǔ)2.4.2鎖相環(huán)時鐘(PLL)一般電子設(shè)備要正常工作,通常需要外部的時鐘輸入與內(nèi)部的振蕩信號同步,利用鎖相環(huán)PLL

(Phase

Lacked

Loop)就可以實現(xiàn)這個目的。鎖相環(huán)是一種反饋控制電路,其特點是利用外部輸入的參考信號控制環(huán)路內(nèi)部振蕩信號的頻率和相位。因鎖相環(huán)可以實現(xiàn)輸出信號頻率對輸入信號頻率的自動跟蹤,所以鎖相環(huán)通常用于閉環(huán)跟蹤電路。鎖相環(huán)在工作過程中,當輸出信號的頻率與輸入信號的頻率相等時,輸出電壓與輸入電壓保持固定的相位差值,即輸出電壓與輸入電壓的相位被鎖住,這就是鎖相環(huán)名稱的由來。內(nèi)部PLL可以用于倍頻HSI的RC輸出時鐘或HSE晶體輸出時鐘。PLL的設(shè)置(選擇HSI振蕩器除2或

HSE振蕩器為PLL的輸入時鐘,和選擇倍頻因子)必須在其被激活前完成。一旦PLL被激活,這些參數(shù)就不能被改動。如果

PLL控制器的中斷在時鐘中斷寄存器中被允許,當PLL準備就緒時,則產(chǎn)生中斷申請。如果需要在應(yīng)用中使用USB接口,

PLL必須被設(shè)置為輸出48

MHz或72

MHz的時鐘,用于提供48

MHz的USBCLK時鐘信號。第2章 STM32應(yīng)用基礎(chǔ)2.4.3低速時鐘(LSE、LSI)1.LSE時鐘LSE是低速外部時鐘,通常可接32.768

kHz的石英晶體。低速外部時鐘源(LSE)可以由外部時鐘輸入和外接晶振兩種電路產(chǎn)生,如圖2.12所示。在外接晶振時,晶體是一個

32.768

kHz的低速外部晶體或陶瓷諧振器。它的優(yōu)點在于能為實時時鐘部件(RTC)提供一個低速高精確的時鐘源。RTC

可以用于時鐘/日歷或其他需要計時的場合。第2章 STM32應(yīng)用基礎(chǔ)圖2.12低頻時鐘(LSE)電路第2章 STM32應(yīng)用基礎(chǔ)2.LSI時鐘LSI是一個低功耗時鐘源,它可以在停機模式或待機模式下保持運行,為獨立看門狗和自動喚醒單元提供時鐘。

LSI時鐘頻率大約為40

kHz(在30~60

kHz之間)。LSI可以通過控制狀態(tài)寄存器(RCC_CSR)中的LSION位來啟動或關(guān)閉。在控制狀態(tài)寄存器(RCC_

CSR)中的LS1RI3Y位判定低速內(nèi)部振蕩器是否穩(wěn)定。在啟動階段,直到這個位被硬件設(shè)置為

1后,此時鐘才可使用。如果在時鐘中斷寄存器(RCC_CIR)中被允許,將產(chǎn)生LSI中斷申請。第2章 STM32應(yīng)用基礎(chǔ)2.4.4系統(tǒng)時鐘(SYSCLK)系統(tǒng)時鐘SYSCLK是供STM32中絕大部分部件工作的時鐘源。如圖2.10所示,STM32將時鐘信號(通常為HSE)經(jīng)過分頻或倍頻(PLL)后,得到系統(tǒng)時鐘,系統(tǒng)時鐘經(jīng)過分頻,產(chǎn)生外設(shè)所使用的時鐘。其中,典型值為40

kHz的LSI供給獨立看門狗IWDG使用,另外它還可以為實時時鐘RTC提供時鐘源。RTC的時鐘源也可以選擇為LSE,或者為HSE的128分頻。RTC的時鐘源通過備份控制寄存器(RCC_BDCR)的RTCSEL

[1:0]來選擇。第2章 STM32應(yīng)用基礎(chǔ)STM32中有一個全速功能的USB模塊,其串行接口需要一個頻率為48

MHz的時鐘源。該時鐘源只能從PLL輸出端獲取,可以選擇為1.5分頻或1分頻,也就是當需要使用USB模塊時,PLL必須使能,并且時鐘頻率配置為48

MHz或72MHz,但這并不意味著USB模塊工作時需要48

MHz,48MHz僅提供給USB串行接口SIE。另外,STM32還可以選擇一個時鐘信號輸出到MCO引腳(PA8)上,可以選擇為PLL輸出的2分頻、HSI、HSE或系統(tǒng)時鐘。第2章 STM32應(yīng)用基礎(chǔ)系統(tǒng)時鐘可選擇為PLL輸出、HSI或HSE,HSI與HSE可以通過分頻加至PLLSRC,并由PLLMUL進行倍頻后,直接充當PLLCLK。系統(tǒng)時鐘最大頻率為72MHz,它通過AHB分頻器分頻后送給各個模塊。送給AHB總線、內(nèi)核、內(nèi)存和DMA使用的HCLK時鐘。通過8分頻后送給系統(tǒng)定時器的時鐘。直接送給處理器的空閑運行時鐘FCLK。送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設(shè)使用(PCLK1,最大頻率為36MHz),另一路送給定時器TIM2~TIM4倍頻器使用。該倍頻器可選擇1倍頻或2倍頻,時鐘輸出供定時器2~定時器4使用。第2章 STM32應(yīng)用基礎(chǔ)送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設(shè)使用(PCLK2,最大頻率為72MHz),另一路送給定時器TIM1倍頻器使用。該倍頻器可選擇1倍頻或2倍頻,時鐘輸出供定時器1使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。送給SDIO使用的SDIOCLK時鐘。送給FSMC使用的FSMCCLK時鐘。2分頻后送給SDIO

AHB接口使用(HCLK/2)。連接在APB1(低速外設(shè))上的設(shè)備有電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、TIM2、TIM3、TIM4。第2章 STM32應(yīng)用基礎(chǔ)(10)連接在APB2(高速外設(shè))上的設(shè)備有UART1、SPI1、TIM1、ADC1、ADC2、所有普通I/O口(PA~PE)、第二功能I/O口。第2章 STM32應(yīng)用基礎(chǔ)2.4.5

RCC寄存器配置1.時鐘控制寄存器(RCC_CR)RCC_CR的偏移地址是00H。復(fù)位默認值是0000

0083H??勺?、半字和字節(jié)無等待訪問。它的32位(D31~D0)含義如下:D31~D26是保留位,始終讀為0。D25(PLLRDY)是PLL時鐘就緒標志位。PLL鎖定后由硬件置1,否則清零。D24(PLLON)是PLL使能位。PLLON=1時使能,PLLON=0時關(guān)閉。D23~D20是保留位,始終讀為0。D19(CSSON)是時鐘安全系統(tǒng)使能位。CSSON=0時,時鐘監(jiān)測器關(guān)閉;CSSON=1時,如果外部時鐘1~25

MHz就緒,則時鐘監(jiān)測器開啟。第2章 STM32應(yīng)用基礎(chǔ)D18(HSEBYP)是外部高速時鐘旁路位,在調(diào)試模式下由軟件置1或清零來旁路外部晶體振蕩器。只有在外部1~25

MHz振蕩器關(guān)閉的情況下,該位才可以寫入。HSEBYP=0時,外部1~25

MHz振蕩器沒有旁路;HSEBYP=1時,外部1~25

MHz外部晶體振蕩器被旁路。D17(HSERDY)是外部高速時鐘就緒標志位,由硬件置1來指示外部時鐘已經(jīng)穩(wěn)定。HSERDY=0時,外部1~25

MHz時鐘沒有就緒;HSERDY=1時,外部1~25

MHz時

鐘就緒。第2章STM32應(yīng)用基礎(chǔ)D16(HSEON)是外部高速時鐘使能位,由軟件置1或清零。當進入待機和停止模式時,該位由硬件清零,關(guān)閉外部時鐘。當外部時鐘被用作或被選擇將要作為系統(tǒng)時鐘時,該位不能被清零。HSEON=0時,HSE振蕩器關(guān)閉;HSEON=1時,HSE振蕩器開啟。D15~D8(HSICAL[7:0])是內(nèi)部高速時鐘校準位。當系統(tǒng)啟動時,這些位被自動初始化。D7~D3(HSITRIM[4:0])是內(nèi)部高速時鐘調(diào)整位,由軟件寫入數(shù)據(jù)來調(diào)整內(nèi)部高速時鐘,它們被疊加在HSICAL[5:0]數(shù)值上。D2是保留位,始終讀為0。第2章 STM32應(yīng)用基礎(chǔ)D1(HSIRDY)是內(nèi)部高速時鐘就緒標志位,由硬件置1來指示內(nèi)部8

MHz時鐘已經(jīng)穩(wěn)定。HSIRDY=0時,內(nèi)部8MHz時鐘沒有就緒;HSIRDY=1時,內(nèi)部8

MHz時鐘就緒。D0(HSION)是內(nèi)部高速時鐘使能位,由軟件置1或清零。當從待機和停止模式返回或用作系統(tǒng)時鐘的外部1~25

MHz時鐘發(fā)生故障時,該位由硬件置1來啟動內(nèi)部8

MHz的RC振蕩器。當內(nèi)部8

MHz時鐘被直接或間接地用作或被

選擇將要作為系統(tǒng)時鐘時,該位不能被清零。HSION=0時,內(nèi)部8

MHz時鐘關(guān)閉;HSION=1時,內(nèi)部8

MHz時鐘開啟。第2章 STM32應(yīng)用基礎(chǔ)2.時鐘配置寄存器(RCC_CFGR)RCC_CFGR的偏移地址是04H。復(fù)位默認值是00000000H。可字、半字和字節(jié)約2周等待訪問。它的32位(D31~D0)含義如下:D31~D26是保留位,始終讀為0。D25~D23(MCO[2:0])是處理器時鐘輸出控制位,由軟件置1或清零。當設(shè)為0xx時,沒有時鐘輸出;設(shè)為100時,系統(tǒng)時鐘輸出;設(shè)為101時,內(nèi)部8

MHz的RC振蕩器時鐘輸出;設(shè)為110時,外部1~25MHz振蕩器時鐘輸出;設(shè)為111時,PLL時鐘2分頻后輸出。第2章 STM32應(yīng)用基礎(chǔ)(3)D22(USBPRE)是USB預(yù)分頻位,由軟件設(shè)置來產(chǎn)生48

MHz的USB時鐘。在RCC_APB1ENR寄存器中使能USB時鐘之前,必須保證該位已經(jīng)有效。如果USB時鐘被使能,該位可以被清零。USBPRE=0時,PLL時鐘1.5倍分頻可作為USB時鐘;USBPRE=1時,PLL時鐘直接作為USB時鐘。第2章 STM32應(yīng)用基礎(chǔ)(4)D21~D18(PLLMUL[3:0])是PLL倍頻系數(shù)位,由軟件設(shè)置來確定PLL倍頻系數(shù)。該位只有在PLL關(guān)閉的情況下才可被寫入(PLL的輸出頻率不能超過72

MHz)。當設(shè)為0000時,PLL

2倍頻輸出;設(shè)為0001時,PLL

3倍頻輸出;設(shè)為

0010時,PLL

4倍頻輸出;設(shè)為0011時,PLL

5倍頻輸出;

設(shè)為0100時,PLL

6倍頻輸出;設(shè)為0101時,PLL

7倍頻輸

出;設(shè)為0110時,PLL

8倍頻輸出;設(shè)為0111時,PLL

9倍

頻輸出;設(shè)為1000時,PLL

10倍頻輸出;設(shè)為1001時,PLL

11倍頻輸出;設(shè)為1010時,PLL

12倍頻輸出;設(shè)為1011時,

PLL

13倍頻輸出;設(shè)為1100時,PLL

14倍頻輸出;設(shè)為

1101時,PLL

15倍頻輸出;設(shè)為1110時,PLL

16倍頻輸出;設(shè)為1111時,PLL

16倍頻輸出。第2章 STM32應(yīng)用基礎(chǔ)D17(PLLXTPRE)是HSE分頻器作為PLL輸入位,由軟件設(shè)置來分頻HSE后作為PLL輸入時鐘。該位只有在PLL關(guān)閉時才可以被寫入。PLLXTPRE=0時,HSE不分頻;PLLXTPRE=1時,HSE

2分頻。D16(PLLSRC)是PLL輸入時鐘源配置位。由軟件設(shè)置來選擇PLL輸入時鐘源。該位只有在PLL關(guān)閉時才可以被寫入。PLLSRC=0時,HSI時鐘2分頻后作為PLL輸入時鐘;PLLSRC=1時,HSE時鐘作為PLL輸入時鐘。第2章 STM32應(yīng)用基礎(chǔ)D15、D14(ADCPRE)是ADC預(yù)分頻配置位,由軟件設(shè)置來確定ADC時鐘頻率。當設(shè)為00時,PCLK22分頻后作為ADC時鐘;設(shè)為01時,PCLK2

4分頻后作為ADC時鐘;

設(shè)為10時,PCLK2

6分頻后作為ADC時鐘;設(shè)為11時,PCLK2

8分頻后作為ADC時鐘。D13~D11(PPRE2)是高速APB預(yù)分頻(APB2)位,由軟件設(shè)置來控制高速APB2預(yù)分頻系數(shù)。當設(shè)為0xx時,HCLK不分頻;設(shè)為100時,HCLK

2分頻;設(shè)為101時,HCLK

4分頻;設(shè)為110時,HCLK

8分頻;設(shè)為111時,HCLK

16分頻。第2章 STM32應(yīng)用基礎(chǔ)D10~D8(PPRE1)是低速APB預(yù)分頻(APB1)設(shè)置位,由軟件設(shè)置來控制低速APB1預(yù)分頻系數(shù)(軟件必須保證

APB1時鐘頻率不超過36

MHz)。當設(shè)為0xx時,HCLK不分頻;設(shè)為100時,HCLK

2分頻;設(shè)為101時,HCLK

4分頻;設(shè)為110時,HCLK

8分頻;設(shè)為111時,HCLK

16分頻。D7~D4(HPRE[3:0])是AHB預(yù)分頻設(shè)置位,由軟件設(shè)置來控制AHB預(yù)分頻系數(shù)。當設(shè)為0xxx時,SYSCLK不分

頻;設(shè)為1000時,SYSCLK

2分頻;設(shè)為1001時,SYSCLK4分頻;設(shè)為1010時,SYSCLK

8分頻;設(shè)為1011時,SYSCLK

16分頻;設(shè)為1100時,SYSCLK

64分頻;設(shè)為1101時,SYSCLK

128分頻;設(shè)為1110時,SYSCLK

256分頻;設(shè)為1111時,SYSCLK

512分頻。第2章 STM32應(yīng)用基礎(chǔ)D3、D2(SWS[1:0])是系統(tǒng)時鐘切換狀態(tài)指示位,由硬件置1和清零來指示哪一個時鐘源被作為系統(tǒng)時鐘。當設(shè)為00時,HSI作為系統(tǒng)時鐘;當設(shè)為01時,HSE作為系統(tǒng)時鐘;當設(shè)為10時,PLL輸出作為系統(tǒng)時鐘;當設(shè)為11時,表示不可用。D1、D0(SW[1:0])是系統(tǒng)時鐘切換位,由軟件設(shè)置來選擇系統(tǒng)時鐘源。當從停止或待機模式中返回時或直接或間接作為系統(tǒng)時鐘的HSE出現(xiàn)故障時,由硬件強制選擇HSI作為系統(tǒng)時鐘(如果時鐘安全系統(tǒng)已經(jīng)啟動)。當設(shè)為00時,HSI作為系統(tǒng)時鐘;當設(shè)為01時,HSE作為系統(tǒng)時鐘;當設(shè)為10時,PLL輸出作為系統(tǒng)時鐘;當設(shè)為11時,表示不可用。第2章 STM32應(yīng)用基礎(chǔ)3.時鐘中斷寄存器(RCC_CIR)RCC_CIR的偏移地址是08H。復(fù)位默認值是00000000H??勺帧胱趾妥止?jié)無等待訪問。它的32位(D31~D0)含義如下:D31~D24是保留位,始終讀為0。D23(CSSC)是時鐘安全系統(tǒng)中斷清除位,由軟件置1來清除CSSF安全系統(tǒng)中斷標志位CSSF。在清除操作完成后,該位由硬件復(fù)位。CSSC=0時,CSSF安全系統(tǒng)中斷標志位未

清零;CSSC=1時,CSSF安全系統(tǒng)中斷標志位清零。D22、D21是保留位,始終讀為0。第2章 STM32應(yīng)用基礎(chǔ)D20(PLLRDYC)是PLL就緒中斷清除位,由軟件置1來清零PLL就緒中斷標志位PLLRDYF。在清除操作完成后,該位由硬件復(fù)位。PLLRDYC=0時,PLL就緒中斷標志位PLLRDYF未清零;PLLRDYC=1時,PLL中斷標志位PLLRDYF清零完成。D19(HSERDYC)是HSE就緒中斷清除位,由軟件置

1來清零HSE就緒中斷標志位HSERDYF。在清除操作完成后,該位由硬件復(fù)位。HSERDYC=0時,HSE就緒中斷標志位HSERDYF未清零;HSERDYC=1時,HSE中斷標志位HSERDYF清零完成。第2章 STM32應(yīng)用基礎(chǔ)D18(HSIRDYC)是HSI就緒中斷清除位。由軟件置1來清零HSI就緒中斷標志位HSIRDYF。在清除操作完成后,該位由硬件復(fù)位。HSIRDYC=0時,HSI就緒中斷標志位HSIRDYF未清零,HSIRDYC=1時,HSI中斷標志位HSIRDYF清零完成。D17(LSERDYC)是LSE就緒中斷清除位,由軟件置1來清零LSE就緒中斷標志位LSERDYF。LSERDYC=0時,LSE就緒中斷標志位LSERDYF未清零;LSERDYC=1時,LSE就緒中斷標志位LSERDYF清零。第2章 STM32應(yīng)用基礎(chǔ)D16(LSIRDYC)是LSI就緒中斷清除位,由軟件置1來清零LSI就緒中斷標志位LSIRDYF。LSIRDYC=0時,LSI就緒中斷標志位LSIRDYF未清零;LSIRDYC=1時,LSI就緒中斷標志位LSIRDYF清零。D15~D13保留位,始終讀為0。D12(PLLRDYIE)是PLL就緒中斷使能位。PLLRDYIE=0時,PLL就緒中斷關(guān)閉;PLLRDYIE=1時,PLL就緒中斷使能完成。D11(HSERDYIE)是HSE就緒中斷使能位。HSERDYIE=0時,HSE就緒中斷關(guān)閉;HSERDYIE=1時,HSE就緒中斷使能。第2章 STM32應(yīng)用基礎(chǔ)D10(HSIRDYIE)是HSI就緒中斷使能位,由軟件置1或清零來使能或關(guān)閉內(nèi)部8

MHz

RC振蕩器就緒中斷。HSIRDYIE=0時,HSI就緒中斷關(guān)閉;HSIRDYIE=1時,HSI就緒中斷使能。D9(LSERDYIE)是LSE就緒中斷使能位,由軟件置1或清零來使能或關(guān)閉外部32

kHz

RC振蕩器就緒中斷。LSERDYIE=0時,LSE就緒中斷關(guān)閉;LSERDYIE=1時,LSE就緒中斷使能。D8(LSIRDYIE)是LSI就緒中斷使能位,由軟件置1或清零來使能或關(guān)閉內(nèi)部32

kHz

RC振蕩器就緒中斷。LSIRDYIE=0時,LSI就緒中斷關(guān)閉;LSIRDYIE=1時,LSI就緒中斷使能。第2章 STM32應(yīng)用基礎(chǔ)D7(CSSF)是時鐘安全系統(tǒng)中斷標志位。CSSF=0時,無HSE時鐘失效安全系統(tǒng)中斷;CSSF=1時,產(chǎn)生HSE時鐘失效安全系統(tǒng)中斷。D6、D5位,保留,始終讀為0。D4(PLLRDYF)是PLL就緒中斷標志位。PLLRDYF=0時,無PLL中斷;PLLRDYF=1時,產(chǎn)生PLL中斷。D3(HSERDYF)是HSE就緒中斷標志位。HSERDYF=0時,無外部1~25

MHz振蕩器就緒中斷;HSERDYF=1時,產(chǎn)生外部1~25

MHz振蕩器就緒中斷。第2章 STM32應(yīng)用基礎(chǔ)D2(HSIRDYF)是HSI就緒中斷標志位。HSIRDYF為0時,無內(nèi)部8

MHz

RC振蕩器就緒中斷;HSIRDYF為1時,產(chǎn)生內(nèi)部8

MHz

RC振蕩器就緒中斷。D1(LSERDYF)是LSE就緒中斷標志位。LSERDYF為0時,無外部32kHz振蕩器就緒中斷;LSERDYE為1時,產(chǎn)生外部32

kHz振蕩器就緒中斷。D0(LSIRDYF)是LSI就緒中斷標志位。LSIRDYF為0時,無內(nèi)部32kHz

RC振蕩器就緒中斷;LSIRDYF為1時,產(chǎn)生內(nèi)部32

kHz

RC振蕩器就緒中斷。第2章 STM32應(yīng)用基礎(chǔ)4.APB2外設(shè)復(fù)位寄存器(RCC_APB2RSTR)RCC_APB2RSTR的偏移地址是0CH。復(fù)位默認值是0000

0000H。可字、半字和字節(jié)無等待訪問。它的32位(D31~D0)含義如下:D31~D15是保留位,始終讀為0。D14(USART1RST)是USART1復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位USART1。D13是保留位,始終讀為0。D12(SPI1RST)是SPI1復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位SPI1。D11(TIM1RST)是TIM1復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位TIM1。第2章 STM32應(yīng)用基礎(chǔ)D10(ADC2RST)是ADC2復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位ADC2。D9(ADC1RST)是ADC1復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位ADC1。D8、D7是保留位,始終讀為0。D6(IOPERST)是IO口E復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位IO口E。D5(IOPDRST)是IO口D復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位IO口D。D4(IOPCRST)是IO口C復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位IO口C。第2章 STM32應(yīng)用基礎(chǔ)D3(IOPBRST)是IO口B復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位IO口B。D2(IOPARST)是IO口A復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位IO口A。D1是保留位,始終讀為0。D0(AFIORST)是輔助功能IO復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位輔助功能。第2章 STM32應(yīng)用基礎(chǔ)5.APB1外設(shè)復(fù)位寄存器(RCC_APB1RSTR)RCC_APB1RSTR的偏移地址是10H。復(fù)位默認值是0000

0000H??勺帧胱趾妥止?jié)無等待訪問。它的32位(D31~D0)含義如下:D31~D29是保留位,始終讀為0。D28(PWRRST)是電源復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位電源電路。D27(BKPRST)是備份復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位備份電路。D26是保留位,始終讀為0。D25(CANRST)是CAN復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位CAN。D24是保留位,始終讀為0。第2章 STM32應(yīng)用基礎(chǔ)D23(USBRST)是USB復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位USB。D22(I2C2RST)是I2C

2復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位I2C2。D21(I2C1RST)是I2C

1復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位I2C1。D20、D19是保留位,始終讀為0。D18(USART3RST)是USART3復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位USART3。D17(USART2RST)是USART2復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位USART2。D16、D15是保留位,始終讀為0。D14(SPI2RST)是SPI2復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位SPI2。第2章 STM32應(yīng)用基礎(chǔ)D13、D12是保留位,始終讀為0。D11(WWDGRST)是窗口看門狗復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位窗口看門狗。D10~D3是保留位,始終讀為0。D2(TIM4RST)是定時器4復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位定時器4。D1(TIM3RST)是定時器3復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位定時器3。D0(TIM2RST)是定時器2復(fù)位位。設(shè)為0時,無效;設(shè)為1時,復(fù)位定時器2。第2章 STM32應(yīng)用基礎(chǔ)6.AHB外設(shè)時鐘使能寄存器(RCC_AHBENR)RCC_AHBENR的偏移地址是14H。復(fù)位默認值是00000014H??勺?、半字和字節(jié)無等待訪問。它的32位(D31~D0)含義如下:D31~D5是保留位,始終讀為0。D4(FLITFEN)是閃存接口電路時鐘使能位。設(shè)為0時,睡眠模式時閃存接口電路時鐘關(guān)閉;設(shè)為1時,睡眠模式時閃存接口電路時鐘開啟。D3是保留,始終讀為0。D2(SRAMEN)是SRAM時鐘使能位。設(shè)為0時,睡眠模式時SRAM時鐘關(guān)閉;設(shè)為1時,睡眠模式時SRAM時鐘開啟。D1是保留位,始終讀為0。D0(DMAEN)是DMA時鐘使能位。設(shè)為0時,DMA時鐘關(guān)閉;設(shè)為1時,DMA時鐘開啟。第2章 STM32應(yīng)用基礎(chǔ)7.APB2外設(shè)時鐘使能寄存器(RCC_APB2ENR)RCC_APB2ENR的偏移地址是18H。復(fù)位默認值是00000000H??勺?、半字和字節(jié)無等待訪問。它的32位(D31~D0)含義如下:D31-D15是保留位,始終讀為0。D14(USART1EN)是USART1時鐘使能位。設(shè)為0時,USART1時鐘關(guān)閉;設(shè)為1時,USART1時鐘開啟。D13是保留,始終讀為0。D12(SPI1EN)是SPI1時鐘使能位。設(shè)為0時,SPI1時鐘關(guān)閉;設(shè)為1時,SPI1時鐘開啟。第2章 STM32應(yīng)用基礎(chǔ)D11(TIM1EN)是TIM1時鐘使能位。設(shè)為0時,TIM1時鐘關(guān)閉;設(shè)為1時,TIM1時鐘開啟。D10(ADC2EN)是ADC2時鐘使能位。設(shè)為0時,ADC2時鐘關(guān)閉;設(shè)為1時,ADC2時鐘開啟。D9(ADC1EN)是ADC1時鐘使能位。設(shè)為0時,ADC1時鐘關(guān)閉;設(shè)為1時,ADC1時鐘開啟。D8、D7是保留位,始終讀為0。D6(IOPEEN)是IO口E時鐘使能位。設(shè)為0時,IO口E時鐘關(guān)閉;設(shè)為1時,IO口E時鐘開啟。D5(IOPDEN)是IO口D時鐘使能位。設(shè)為0時,IO口D時鐘關(guān)閉;設(shè)為1時,IO口D時鐘開啟。第2章 STM32應(yīng)用基礎(chǔ)D4(IOPCEN)是IO口C時鐘使能位。設(shè)為0時,IO口C時鐘關(guān)閉;設(shè)為1時,IO口C時鐘開啟。D3(IOPBEN)是IO口B時鐘使能位。設(shè)為0時,IO口B時鐘關(guān)閉;設(shè)為1時,IO口B時鐘開啟。D2(IOPAEN)是IO口A時鐘使能位。設(shè)為0時,IO口A時鐘關(guān)閉;設(shè)為1時,IO口A時鐘開啟。D1是保留位,始終讀為0。D0(AFIOEN)是輔助功能IO時鐘使能位。設(shè)為0時,輔助功能IO時鐘關(guān)閉;設(shè)為1時,輔助功能IO時鐘開啟。第2章 STM32應(yīng)用基礎(chǔ)8.APB1外設(shè)時鐘使能寄存器(RCC_APB1ENR)RCC_APB1ENR偏移地址是1CH。復(fù)位默認值是00000000H??勺?、半字和字節(jié)無等待訪問。它的32位(D31~D0)含義如下:D31~D29是保留位,始終讀為0。D28(PWREN)是電源時鐘使能位。設(shè)為0時,電源時鐘關(guān)閉;設(shè)為1時,電源時鐘開啟。D27(BKPEN)是備份時鐘使能位。設(shè)為0時,備份時鐘關(guān)閉;設(shè)為1時,備份時鐘開啟。D26是保留位,始終讀為0。D25(CANEN)是CAN時鐘使能。設(shè)為0時,CAN時鐘關(guān)閉;設(shè)為1時,CAN時鐘開啟。第2章 STM32應(yīng)用基礎(chǔ)D24是保留位,始終讀為0。D23(USBEN)是USB時鐘使能位。設(shè)為0時,USB時鐘關(guān)閉;設(shè)為1時,USB時鐘開啟。D22(I2C2EN)是I2C2時鐘使能位。設(shè)為0時,I2C2時鐘關(guān)閉;設(shè)為1時,I2C2時鐘開啟。D21(I2C1EN)是I2C1時鐘使能位。設(shè)為0時,I2C1時鐘關(guān)閉;設(shè)為1時,I2C1時鐘開啟。D20、D19是保留位,始終讀為0。D18(USART3EN)是USART3時鐘使能位。設(shè)為0時,USART3時鐘關(guān)閉;設(shè)為1時,USART3時鐘開啟。第2章 STM32應(yīng)用基礎(chǔ)D17(USART2EN)是USART2時鐘使能位。設(shè)為0時,USART2時鐘關(guān)閉;設(shè)為1時,USART2時鐘開啟。D16、D15是保留位,始終讀為0。D14(SPI2EN)是SPI2時鐘使能位。設(shè)為0時,SPI2時鐘關(guān)閉;設(shè)為1時,SPI2時鐘開啟。D13、D12是保留位,始終讀為0。D11(WWDGEN)是窗口看門狗時鐘使能位。設(shè)為0時,窗口看門狗時鐘關(guān)閉;設(shè)為1時,窗口看門狗時鐘開啟。D10~D3是保留位,始終讀為0。第2章 STM32應(yīng)用基礎(chǔ)D2(TIM4EN)是定時器4時鐘使能位。設(shè)為0時,定時器4時鐘關(guān)閉;設(shè)為1時,定時器4時鐘開啟。D1(TIM3EN)是定時器3時鐘使能位。設(shè)為0時,定時器3時鐘關(guān)閉;設(shè)為1時,定時器3時鐘開啟。D0(TIM2EN)是定時器2時鐘使能位。設(shè)為0時,定時器2時鐘關(guān)閉;設(shè)為1時,定時器2時鐘開啟。第2章 STM32應(yīng)用基礎(chǔ)9.備份域控制寄存器(RCC_BDCR)RCC_BDCR偏移地址是20H。復(fù)位默認值是0000

0000H。可字、半字和字節(jié)等待約3個機器周期訪問。它的32位(D31~D0)含義如下:D31~D17是保留位,始終讀為0。D16(BDRST)是備份域軟件復(fù)位位。設(shè)為0時,復(fù)位未激活;設(shè)為1時,復(fù)位整個備份域。D15(RTCEN)是RTC時鐘使能位。設(shè)為0時,RTC時鐘關(guān)閉;設(shè)為1時,RTC時鐘開啟。D14~D10是保留位,始終讀為0。第2章 STM32應(yīng)用基礎(chǔ)D9、D8(RTCSEL[1:0])是RTC時鐘源選擇位。該位只能被寫入一次,可通過置1

BDRST位來清除。設(shè)為00時,無時鐘;設(shè)為01時,LSE振蕩器作為RTC時鐘;設(shè)為10時,

LSI振蕩器作為RTC時鐘;設(shè)為11時,HSE振蕩器在128分頻后作為RTC時鐘。D7~D3是保留位,始終讀為0。D2(LSEBYP)是外部低速時鐘振蕩器旁路位。只有在外部32

kHz振蕩器關(guān)閉時,才能寫入該位。設(shè)為0時,LSE時鐘未被旁路;設(shè)為1時,LSE時鐘被旁路。D1(LSERDY)是外部低速LSE就緒位。設(shè)為0時,外部32

kHz振蕩器未就緒;設(shè)為1時,外部32

kHz振蕩器就緒。D0(LSEON)是外部低速振蕩器使能位。設(shè)為0時,外部32

kHz振蕩器關(guān)閉;設(shè)為1時,外部32

kHz振蕩器開啟。第2章 STM32應(yīng)用基礎(chǔ)10.控制/狀態(tài)寄存器(RCC_CSR)RCC_CSR偏移地址是24H。復(fù)位默認值是0000

0000H??勺帧胱趾妥止?jié)等待約3個機器周期訪問。它的32位(D31~D0)含義如下:D31(LPWRRSTF)是低功耗復(fù)位標志位。設(shè)為0時,無低功耗管理復(fù)位發(fā)生;設(shè)為1時,發(fā)生低功耗管理復(fù)位。D30(WWDGRSTF)是窗口看門狗復(fù)位標志位。設(shè)為0時,無窗口看門狗復(fù)位發(fā)生;設(shè)為1時,發(fā)生窗口看門狗復(fù)位。D29(IWDGRSTF)是獨立看門狗復(fù)位標志位。設(shè)為0時,無獨立看門狗復(fù)位發(fā)生;設(shè)為1時,發(fā)生獨立看門狗復(fù)位。第2章 STM32應(yīng)用基礎(chǔ)D28(SFTRSTF)是軟件復(fù)位標志位。設(shè)為0時,無軟件復(fù)位發(fā)生;設(shè)為1時,發(fā)生軟件復(fù)位。D27(PORRSTF)是上電/掉電復(fù)位標志位。設(shè)為0時,無上電/掉電復(fù)位發(fā)生;設(shè)為1時,發(fā)生上電/掉電復(fù)位。D26(PINRSTF)是NRST管腳復(fù)位標志位。設(shè)為0時,無NRST管腳復(fù)位發(fā)生;設(shè)為1時,發(fā)生NRST管腳復(fù)位。D25是保留位,讀操作返回0。D24(RMVF)是清除復(fù)位標志位。設(shè)為0時,保持復(fù)位標志;設(shè)為1時,清零復(fù)位標志。第2章 STM32應(yīng)用基礎(chǔ)D23~D2是保留位,讀操作返回0。D1(LSIRDY)是內(nèi)部低速時鐘就緒位。設(shè)為0時,LSI(內(nèi)部32

kHz

RC振蕩器)時鐘未就緒;設(shè)為1時,LSI(內(nèi)部32

kHz

RC振蕩器)時鐘就緒。D0(LSION)是內(nèi)部低速振蕩器使能位。設(shè)為0時,內(nèi)部32

kHz

RC振蕩器關(guān)閉;設(shè)為1時,內(nèi)部32

kHz

RC振蕩器開啟。第2章 STM32應(yīng)用基礎(chǔ)2.5

STM32系列處理器的存儲結(jié)構(gòu)與映射STM32處理器將存儲器看作是從地址0開始的字節(jié)(存儲空間)的線性組合。在0~3字節(jié)(B)放置第1個存儲的字數(shù)據(jù)(4個字節(jié)),在4~7B放置第2個存儲的字數(shù)據(jù)(4字節(jié)),依次類推排列。作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4

GB(232B)。內(nèi)存中有兩種格式存儲字數(shù)據(jù),稱之為小端格式和大端格式。這種格式根據(jù)最低有效字節(jié)與相鄰較高有效字節(jié)相比是存儲在較低地址還是最高地址來區(qū)分。小端格式存儲方式下將較低字節(jié)存放在較低地址,大端格式則將較低字節(jié)存放在較高地址,如存儲0x12345678,如圖2.13所示。第2章 STM32應(yīng)用基礎(chǔ)通常情況下,STM32系列處理器在復(fù)位時確定使用大/小端的工作模式,且在運行的過程中不允許對其進行修改。在絕大多數(shù)情況下,STM32系列處理器都使用了小端模式

以避免不必要的麻煩。在這里,也同樣推薦用戶在非特殊情況下都使用小端模式。在STM32F103XX處理器中,只有一個固定的存儲器映射。這一點可以方便地實現(xiàn)軟件代碼在各種不同型號STM32系列處理器之間的移植。需要說明的是,STM32系列處理器中有關(guān)存儲器空間的劃分是比較粗淺的,它允許芯片制造廠商按照各自的需要靈活地分配存儲器空間,以適應(yīng)各種不同的應(yīng)用場合。第2章 STM32應(yīng)用基礎(chǔ)圖2.13

STM32存儲器中的大小端模式第2章 STM32應(yīng)用基礎(chǔ)2.5.1存儲器結(jié)構(gòu)STM32處理器內(nèi)部地址空間的大小為4GB,采用統(tǒng)一編址。用戶編寫的程序代碼可以在代碼區(qū)、內(nèi)部SRAM區(qū),以及外部擴展的RAM區(qū)中執(zhí)行,具體的結(jié)構(gòu)分布如圖2.14所示。由于在STM32系統(tǒng)中指令地址和數(shù)據(jù)地址是在不同區(qū)域,因此建議用戶將程序代碼放置到代碼區(qū)。這樣就可以使取址操作和數(shù)據(jù)訪問操作各自使用自己的區(qū)域,而不會發(fā)生沖突。第2章 STM32應(yīng)用基礎(chǔ)圖2.14

STM32存儲器組織第2章 STM32應(yīng)用基礎(chǔ)在STM32處理器的內(nèi)核中,內(nèi)部SRAM的大小為512MB,主要用于讓芯片制造廠商能夠連接到片上SRAM。這個區(qū)域中的數(shù)據(jù)可以通過系統(tǒng)總線進行訪問。STM32在內(nèi)部SRAM區(qū)域的底部,存在一個1

MB的空間,成為“位帶區(qū)”(見圖2.14)?!拔粠^(qū)”具有一個32MB且與之對應(yīng)的“位帶別名區(qū)”,可容納8

MB位

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論