帶你走進STM32的世界

STM32F10xx時鐘系統框圖:時鐘是整個系統的脈搏編程

下圖是STM32F10xx時鐘系統的框圖,經過這個圖能夠一目瞭然地看到各個部件時鐘產生的路徑,還能夠很方便地計算出各部分的時鐘頻率。安全

STM32的四個時鐘源(HSI、HSE、LSI和LSE)也在圖中標出;圖中間的時鐘監視系統(CSS)是在不少ST7的單片機中就出現的安全設置。特別注意:圖的右邊,輸出定時器時鐘以前有一個乘法器,它的操做不是由程序控制的,是由硬件根據前一級的APB預分頻器的輸出自動選擇,當APB預分頻器的分頻因子爲1時,這個乘法器無做用;當APB預分頻器的分頻因子大於1時,這個乘法器作倍頻操做,即將APB預分頻器輸出的頻率乘2,這樣能夠保證定時器能夠獲得最高的72MHz時鐘脈衝。性能

STM32上不少管腳功能能夠從新映射設計

STM32上有不少I/O口,也有不少的內置外設,爲了節省引出管腳,這些內置外設都是與I/O口共用引出管腳,ST稱其爲I/O管腳的複用功能,相信這點你們都很清楚,由於基本上全部單片機都是這麼作的。但不知有多少人知道,不少複用功能的引出腳能夠經過重映射,從不一樣的I/O管腳引出,即複用功能的引出腳位是可經過程序改變的。調試

這一功能的直接好處是,PCB電路板的設計人員能夠在須要的狀況下,沒必要把某些信號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減小了信號的交叉干擾。複用功能引出腳的重映射功能所帶來的潛在好處是,在你不須要同時使用多個複用功能時,虛擬地增長複用功能的數量。例如,STM32上最多有3個USART接口,當你須要更多UART接口而又不須要同時使用它們時,能夠經過這個重映射功能實現更多的UART接口。接口

下述複用功能的引出腳具備重映射功能:開發

- 晶體振盪器的引腳在不接晶體時,能夠做爲普通I/O口terminal

- CAN模塊it

- JTAG調試接口配置

- 大部分定時器的引出接口

- 大部分USART的引出接口

- I2C1的引出接口

- SPI1的引出接口

詳細內容請看STM32的技術參考手冊。

請務必記住:若是使用了任意一種重映射功能,在初始化和使用以前,必定要打開AFIO時鐘。

下圖示出了部分複用功能引出腳的重映射結果:

【演示實例】一個在EK-STM32F板子上的RTC做爲calender的例子

硬件鏈接:串口線連至板子的UART-0端口。超級終端設置爲:

Bits Per seconds: 115200

Data bits: 8

Parity: none

Stop bits: 1

Flow control Hardware

板子第一次跑這個程序時,進入時間配置。

根據超級終端上的提示,一次輸入年,月,日,時,分,秒

(1月就輸入01,10月直接輸入10;同理3號就輸入03)

隨後當前的時間就顯示到了超級終端上,而且每秒刷新。

沒有斷電的狀況下再跑這個程序,因爲看到bake up區域有被設置過期間的標誌,再也不進入時間設置階段,而是直接到時間顯示間斷,在超級終端上,每秒刷新。

固然若是在EK-STM32F板子上將Vbat和電池相接,具體就是:將紅色的電源跳線帽中的從下往上數的第5個取下,從原來的水平放置改爲豎直放置(和上面的VBAT相連)。就算斷電,只要再上電,看到back up區域中的記號,同樣直接進入時間顯示。由於斷電後,back up區域由電池供電,其中記錄的記號不會因爲系統掉電而消失。

【演示實例】使用EK-STM32F板測量STM32的功耗

這個例子演示瞭如何使用EK-STM32F開發評估板測量STM32F103VBT6在各類模式下的功耗。例子中演示瞭如何進入STM32的各類模式(RUN、SLEEP、STOP、STANDBY),使用這個例子您能夠經過EK-STM32F板上的紅色跳線(VDD、VREF+和VDDA)測量功耗。

本實例首先經過UART與Windows的Hyperterminal通訊,用戶能夠選擇須要進入的功耗模式,而後這個例程把用戶選好的配置存到後備寄存器,再次復位後STM32將進入以前選定的模式。

附件包中包含了一個說明文件,詳細說明了如何設置板上的跳線和操做的過程。

STM32 GPIO的十大優越功能綜述

前幾天Hotpower邀請你們討論一下GPIO的功能、性能和優缺點(STM32的GPIO很強大~~~),等了幾天沒見太多人發言,但綜合來看提到了3點:1)真雙向IO,2)速度快,3)寄存器功能重複。關於第3點有說好,有說多餘的,見仁見智。

下面我就在作個拋磚引玉,根據ST手冊上的內容,簡單地綜述一下GPIO的功能:

1、共有8種模式,能夠經過編程選擇:

1. 浮空輸入

2. 帶上拉輸入

3. 帶下拉輸入

4. 模擬輸入

5. 開漏輸出——(此模式可實現hotpower說的真雙向IO)

6. 推輓輸出

7. 複用功能的推輓輸出

8. 複用功能的開漏輸出

模式7和模式8需根據具體的複用功能決定。

2、專門的寄存器(GPIOx_BSRR和GPIOx_BRR)實現對GPIO口的原子操做,即迴避了設置或清除I/O端口時的「讀-修改-寫」操做,使得設置或清除I/O端口的操做不會被中斷處理打斷而形成誤動做。

3、每一個GPIO口均可以做爲外部中斷的輸入,便於系統靈活設計。

4、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利於噪聲控制。

5、全部I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。

6、大電流驅動能力:GPIO口在高低電平分別爲0.4V和VDD-0.4V時,能夠提供或吸取8mA電流;若是把輸入輸出電平分別放寬到1.3V和VDD-1.3V時,能夠提供或吸取20mA電流。

7、具備獨立的喚醒I/O口。

8、不少I/O口的複用功能能夠從新映射,見:你知道嗎?STM32上不少管腳功能能夠從新映射。

9、GPIO口的配置具備上鎖功能,當配置好GPIO口後,能夠經過程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能很是有利於在程序跑飛的狀況下保護系統中其餘的設備,不會由於某些I/O口的配置被改變而損壞——如一個輸入口變成輸出口並輸出電流。

10、輸出模式下輸入寄存器依然有效,在開漏配置模式下實現真正的雙向I/O功能。

STM32內置參照電壓的使用

每一個STM32芯片都有一個內部的參照電壓,至關於一個標準電壓測量點,在芯片內部鏈接到ADC1的通道17。

根據數據手冊中的數據,這個參照電壓的典型值是1.20V,最小值是1.16V,最大值是1.24V。這個電壓基本不隨外部供電電壓的變化而變化。

很多人把這個參照電壓與ADC的參考電壓混淆。ADC的參考電壓都是經過Vref+提供的。100腳以上的型號,Vref+引到了片外,引腳名稱爲Vref+;64腳和小於64腳的型號,Vref+在芯片內部與VCC信號線相連,沒有引到片外,這樣AD的參考電壓就是VCC上的電壓。

在ADC的外部參考電壓波動,或由於Vref+在芯片內部與VCC相連而VCC變化的狀況下,若是對於ADC測量的準確性要求不高時,可使用這個內部參照電壓獲得ADC測量的電壓值。

具體方法是在測量某個通道的電壓值以前,先讀出參照電壓的ADC測量數值,記爲ADrefint;再讀出要測量通道的ADC轉換數值,記爲ADchx;則要測量的電壓爲:

Vchx = Vrefint * (ADchx/ADrefint)

其中Vrefint爲參照電壓=1.20V。

上述方法在使用內置溫度傳感器對由於溫度變化,對系統參數進行補償時就十分有效。

相關文章
相關標籤/搜索