前言和學(xué)習(xí)過(guò)程
寒假開始的任務(wù)是學(xué)習(xí)STM32單片機(jī),剛拿到了微云電子的學(xué)習(xí)板并加入了微云電子STM32學(xué)習(xí)群中,下載了一些資料,并知道了該單片機(jī)學(xué)習(xí)板的主芯片為STM32F0系列,十分感謝老師給我學(xué)習(xí)的機(jī)會(huì)。 我學(xué)習(xí)時(shí)候,以看老師的學(xué)習(xí)開發(fā)手冊(cè)和STM32的視頻為主,并配上STM32芯片手冊(cè),由于自己英語(yǔ)學(xué)的不錯(cuò),偶爾打開Wikipedia英文版和百度百科學(xué)習(xí)一些新知識(shí)。 第一章和第二章 開發(fā)板體驗(yàn)和簡(jiǎn)介 我認(rèn)為這部分內(nèi)容已經(jīng)講的很明確了,可以作為科普讀物,詳細(xì)地了解板子及其強(qiáng)大的功能,暫時(shí)無(wú)需太多補(bǔ)充。 第三章 電路原理 電路外設(shè)的介紹在開發(fā)板手冊(cè)中已經(jīng)十分清楚,這里補(bǔ)充一些原理和原因。 3.1 工作原理圖的使用 面對(duì)這個(gè)功能強(qiáng)大卻又讓人陌生的STM32開發(fā)板,可不要望而卻步,而要知道STM32開發(fā)板有什么功能,以及自己的知識(shí)框架中少了什么,然后要明白應(yīng)該去學(xué)習(xí)哪些知識(shí)才可以攻克它。 知己知彼,百戰(zhàn)不殆。其中電路工作原理圖,就如同古代行軍打仗的地圖,你在看完電路圖后,就可以知道開發(fā)板的引腳及其對(duì)應(yīng)元器件分配,就如圖打仗時(shí)候,在地圖上標(biāo)出敵軍的具體部署,從而有目的的逐一擊破。那么這里,我們先找到《STM32+Linux原理圖.pdf》,打開看:
圖1.STM32芯片外設(shè)原理圖 上圖可謂是重中之重,想要學(xué)明白我們的微云電子開發(fā)板,該文件必不可少,而在該文件中這張圖必不可少,通過(guò)它,我們便明白了到底很多外設(shè),例如Led、電源、LCD這些器件到底和誰(shuí)連一塊,這決定了我們之后的程序怎么寫,如果不理解這段話,下面會(huì)詳細(xì)再介紹。 3.2硬件載體選擇:開發(fā)板VS面包板 有些人可能很不解,為什么我們程序一定要那么寫?(如:為什么Led一定和PA12有關(guān)而不寫PA11口呀?)或者說(shuō),為什么為什么Led就不能和其它的GPIO口“聯(lián)誼”,讓它們來(lái)輸出? 由于我們使用的是微云電子的STM32開發(fā)板是PCB(Printed Circuit Board)印制電路板,開發(fā)板與面包板不同之處在于,開發(fā)板已經(jīng)將所有的器件焊接完成,即電路是已經(jīng)完全被確定,且一一對(duì)應(yīng)好的;面包板是可以更改的,按照自己的意愿來(lái)完成電路的設(shè)計(jì),但是電路可能不穩(wěn)定,而且要很長(zhǎng)的時(shí)間來(lái)搭建。 因此為了學(xué)習(xí)以及使用方便,我們還是用PCB。既然開發(fā)板上已經(jīng)定死了引腳和外設(shè)的關(guān)系,在學(xué)習(xí)該開發(fā)板應(yīng)該多多翻閱《STM32+Linux原理圖.pdf》。 3.3 STM32介紹 我們?cè)趩纹瑱C(jī)里使用的是STM32F051C8T6,它是我們開發(fā)板的核心,也就是開發(fā)板上電子器件的老大,“擒賊先擒王!”。想要了解我們的這款開發(fā)板,其實(shí)也就是一直在學(xué)習(xí)STM32,怎么利用其他的小弟器件和它進(jìn)行配合。 要想詳細(xì)地了解STM32,首先應(yīng)該查其對(duì)應(yīng)的DATASHEET,因?yàn)檫@畢竟是它們公司的出品,最最詳細(xì)地介紹了這款單片機(jī)。下面就通過(guò)翻譯,來(lái)介紹下我們微云電子STM32開發(fā)板上的這款單片機(jī)。 3.3.1 單片機(jī)命名法則
圖2.STM32命名實(shí)例圖 每個(gè)單片機(jī)的名字可不是隨便取的,它可是有自己的命名法則的,所以我們一開始得先知道為什么我們的單片機(jī)叫STM32F051C8T6。 結(jié)合上圖翻譯一下,來(lái)解釋一下我們的單片機(jī)STM32F051C8T6。 “STM32”是意法半導(dǎo)體的一款基于ARM的32位單片機(jī),32位一聽就是高大上,完虐8位的80C51或者是它的同門師弟STM8; “F”指的是一般用途的單片機(jī),就是比較適合民用,這樣價(jià)格不高,我們才可以消費(fèi)得起; “051”是子家族的意思,具體沒去查,就是它們公司自己的一個(gè)分配; “C”指的是有48個(gè)引腳的封裝類型,所以我們的單片機(jī)正好四四方方的每邊12個(gè)引腳; “8”指的是有64KB的閃存空間,是STM32這幾個(gè)款式中閃存空間的最大的一款,足夠你用了!; “T”指的是,采用了LQFP封裝,不用深究; “6”指的是,該款單片機(jī)適合在-40℃到+85℃的環(huán)境下工作。 而由于STM32F051C8T6上沒有對(duì)應(yīng)Options的字母,所以并不知道該選項(xiàng),但是無(wú)關(guān)緊要,完全不影響我們的 那么,講了它名稱由來(lái)后,我們從應(yīng)該已經(jīng)宏觀上了解這款單片機(jī)了吧,接下來(lái)講講引腳,進(jìn)一步理解它!
3.3.2 引腳介紹 首先看一下,我們微云電子的STM32開發(fā)板上的單片機(jī)STM32F051C8T6俯視圖:
圖3.開發(fā)板STM32單片機(jī)俯視圖 接著,我們?cè)敿?xì)地介紹一下我們這款單片機(jī)的引腳分配,為大家揭開我們開發(fā)板上STM32的神秘面紗!(在這里僅截取微云電子開發(fā)板上STM32F051C8T6的相關(guān)引腳,原創(chuàng)翻譯,部分內(nèi)容與STM32中文手冊(cè)略有差異) 表1.STM32F051C8T6的引腳定義表 引腳號(hào) | 引腳名稱(復(fù)位后的功能) | 引腳類型 | I/O結(jié)構(gòu) | 復(fù)用功能 | 附加功能 | 備注 | 1 | VBAT | S |
| 備用電源 |
| 2 | PC13 | I/O | TC | - | RTC_TAMP1, RTC_TS,RTC_OUT, WKUP2 | (1)(2) | 3 | PC14-OSC32_IN(PC14) | I/O | TC | - | OSC32_IN | (1)(2) | 4 | PC15-OSC32_OUT(PC15) | I/O | TC | - | OSC32_OUT | (1)(2) | 5 | PF0-OSC_IN(PF0) | I/O | FT | - | OSC_IN |
| 6 | PF1-OSC_OUT(PF1) | I/O | FT | - | OSC_OUT |
| 7 | NRST | I/O | RST | 器件復(fù)位輸入 / 內(nèi)部復(fù)位輸出(低電平有效) |
| 8 | VSSA | S |
| 模擬地 |
| 9 | VDDA | S |
| 模擬電源 |
| 10 | PA0 | I/O | TTa | USART2_CTS, TIM2_CH1_ETR,
COMP1_OUT, TSC_G1_IO1 | ADC_IN0, COMP1_
INM6, RTC_TAMP2,
WKUP1 |
| 11 | PA1 | I/O | TTa | USART2_RTS, TIM2_CH2, TSC_
G1_IO2, EVENTOUT | ADC_IN1, COMP1_INP |
| 12 | PA2 | I/O | TTa | USART2_TX, TIM2_CH3, TIM15_
CH1, COMP2_OUT, TSC_G1_IO3 | ADC_IN2, COMP2_
INM6 |
| 13 | PA3 | I/O | TTa | USART2_RX, TIM2_CH4, TIM15_
CH2, TSC_G1_IO4 | ADC_IN3, COMP2_INP |
| 14 | PA4 | I/O | TTa | SPI1_NSS/I2S1_WS, USART2_
CK, TIM14_CH1, TSC_G2_IO1 | ADC_IN4, COMP1_
INM4, COMP2_INM4,
DAC1_OUT |
| 15 | PA5 | I/O | TTa | SPI1_SCK/I2S1_CK, CEC, TIM2_
CH_ETR, TSC_G2_IO2 | ADC_IN5, COMP1_
INM5, COMP2_INM5 |
| 16 | PA6 | I/O | TTa | SPI1_MISO/I2S1_MCK, TIM3_
CH1, TIM1_BKIN, TIM16_CH1,
COMP1_OUT, TSC_G2_IO3,
EVENTOUT | ADC_IN6 |
| 17 | PA7 | I/O | TTa | SPI1_MOSI/I2S1_SD, TIM3_
CH2, TIM14_CH1, TIM1_CH1N,
TIM17_CH1, COMP2_OUT, TSC_
G2_IO4, EVENTOUT | ADC_IN7 |
| 18 | PB0 | I/O | TTa | TIM3_CH3, TIM1_CH2N, TSC_
G3_IO2, EVENTOUT |
ADC_IN8
|
| 19 | PB1 | I/O | TTa | TIM3_CH4, TIM14_CH1, TIM1_
CH3N, TSC_G3_IO3 | ADC_IN9 |
| 20 | PB2 | I/O | FT | TSC_G3_IO4 | - |
| 21 | PB10 | I/O | FT | I2C2_SCL,
CEC,
TIM2_CH3,
TSC_SYNC | - |
| 22 | PB11 | I/O | FT | I2C2_SDA,
TIM2_CH4,
TSC_G6_IO1,
EVENTOUT | - |
| 23 | VSS | S |
| 數(shù)字地 |
| 24 | VDD | S |
| 數(shù)字電源 |
| 25 | PB12 | I/O | FT | SPI2_NSS, TIM1_BKIN, TSC_
G6_IO2, EVENTOUT | - |
| 26 | PB13 | I/O | FT | SPI2_SCK, TIM1_CH1N, TSC_
G6_IO3 | - |
| 27 | PB14 | I/O | FT | SPI2_MISO, TIM1_CH2N, TIM15_
CH1, TSC_G6_IO | - |
| 28 | PB15 | I/O | FT | SPI2_MOSI, TIM1_CH3N, TIM15_
CH1N, TIM15_CH2 | RTC_REFIN |
| 29 | PA8 | I/O | FT | USART1_CK, TIM1_CH1,
EVENTOUT, MCO | - |
| 30 | PA9 | I/O | FT | USART1_TX,
TIM1_CH2,
TIM15_BKIN,
TSC_G4_IO1 | - |
| 31 | PA10 | I/O | FT | USART1_RX,
TIM1_CH3,
TIM17_BKIN,
TSC_G4_IO2 | - |
| 32 | PA11 | I/O | FT | USART1_CTS,
TIM1_CH4,
COMP1_OUT,
TSC_G4_IO3,
EVENTOUT | - |
| 33 | PA12 | I/O | FT | USART1_RTS,
TIM1_ETR,
COMP2_OUT,
TSC_G4_IO4,
EVENTOUT | - |
| 34 | PA13(SWDIO) | I/O | FT | IR_OUT,
SWDIO | - | (3) | 35 | PF6 | I/O | FTf | I2C2_SCL | - |
| 36 | PF7 | I/O | FTf | I2C2_SDA | - |
| 37 | PA14(SWCLK) | I/O | FT | USART2_TX,
SWCLK | - | (3) | 38 | PA15 | I/O | FT | SPI1_NSS,
I2S1_WS,
USART2_RX,
TIM2_CH1_ETR,
EVENTOUT | - |
| 39 | PB3 | I/O | FT | SPI1_SCK,
I2S1_CK,
TIM2_CH2,
TSC_G5_IO1,
EVENTOUT | - |
| 40 | PB4 | I/O | FT | SPI1_MISO,
I2S1_MCK,
TIM3_CH1,
TSC_G5_IO2,
EVENTOUT | - |
| 41 | PB5 | I/O | FT | SPI1_MOSI,
I2S1_SD,
I2C1_SMBA,
TIM16_BKIN,
TIM3_CH2 | - |
| 42 | PB6 | I/O | FTf | I2C1_SCL,
USART1_TX,
TIM16_CH1N,
TSC_G5_IO3 | - |
| 43 | PB7 | I/O | FTf | I2C1_SDA,
USART1_RX,
TIM17_CH1N,
TSC_G5_IO4 | - |
| 44 | BOOT0 | I | B | Boot memory selection |
| 45 | PB8 | I/O | FTf | I2C1_SCL,
CEC,
TIM16_CH1,
TSC_SYNC | - | (3) | 46 | PB9 | I/O | FTf | I2C1_SDA,
IR_OUT,
TIM17_CH1,
EVENTOUT | - |
| 47 | VSS | S |
| 數(shù)字地 |
| 48 | VDD | S |
| 數(shù)字電源 |
|
表1中有太多英文縮寫,下面就由下表來(lái)解釋一下,其中的縮寫是什么意思: 表2. 引腳表的標(biāo)記與縮寫解釋 名稱 | 縮寫 | 定義 | 引腳名 | 除非在指定的引腳名稱下面有括號(hào)說(shuō)明,在復(fù)位期間和之后,引腳作為實(shí)際使用的功能與引腳名稱相同。 | 引腳類型 | S | 電源引腳 |
| I | 僅是輸入口 |
| I/O | 輸入/輸出雙向口 | I/O結(jié)構(gòu) | FT | 5V容忍能力I/O |
| FTf | 5V容忍能力I/O,附加 FM+ 能力 |
| TTa | 3.3V容忍能力的I/O直接連接到ADC |
| TC | 標(biāo)準(zhǔn)3.3VI/O |
| B | 專用BOOT0引腳 |
| RST | 雙向復(fù)位引腳,并嵌入弱上拉電阻 | 注釋 | 除非注釋中提到,否則所有I/O口在復(fù)位期間和復(fù)位后,認(rèn)為是浮空輸入。 | 引腳功能 | 復(fù)用功能 | 通過(guò) GPIOx_AFR寄存器選擇的功能 |
| 附加功能 | 通過(guò)外設(shè)寄存器直接選擇/使能的功能 |
在表1中,我們看到注釋里有些引腳后面帶有(1)~(3),這些注釋如下: (1).PC13, PC14 和PC15需要通過(guò)電源開關(guān)來(lái)供能,由于電源開關(guān)吸收僅3mA大小的電流,所以說(shuō),PC13, PC14 和PC15 這三個(gè)GPIO口的輸出模式受限:速度不可超過(guò)2 MHz,并且最大帶一個(gè)30pF的負(fù)載,最關(guān)鍵的是這幾個(gè)GPIO口禁止作為電流源(比如去點(diǎn)亮LED燈)。 (2).第一次實(shí)時(shí)時(shí)鐘域上電后,PC13, PC14 和PC15口可以作為GPIO口來(lái)使用。它們的功能取決于實(shí)時(shí)時(shí)鐘寄存器,而且這個(gè)部分的設(shè)置不會(huì)受到總復(fù)位的影響,詳細(xì)請(qǐng)參考實(shí)時(shí)時(shí)鐘域和實(shí)時(shí)時(shí)鐘寄存器的描述手冊(cè)。 (3) .在復(fù)位后,一些引腳被置成SWDIO和SWCLK這些備用功能,而且SWDIO的內(nèi)部上拉和SWCLK的內(nèi)部下拉功能被激活打開。
3.3.3 選擇微云電子STM32開發(fā)板的原因 功能強(qiáng)大:為什么選擇微云電子學(xué)習(xí)STM32單片機(jī)?這是因?yàn)閺那懊娴慕榻B,或許我們已經(jīng)發(fā)現(xiàn)STM32的高大上了,80C51可以做的,STM32都能完成,可以理解成STM32就是80C51不斷進(jìn)化,進(jìn)化進(jìn)化最終質(zhì)變,雖然說(shuō)現(xiàn)在80C51運(yùn)用范圍還是很廣的,但是一旦遇到一些大工程,這款8位單片機(jī)便死翹翹了。尤其是隨著時(shí)代的發(fā)展,智能家居已經(jīng)成為顯示,雖然還沒有真正火起來(lái),但是正如初生的旭日,越來(lái)越亮,它的前景可想而知。那時(shí)候,我想生產(chǎn)智能家居的單片機(jī)要更加高端,而不是80C51。我們知道80C51沒有如ADC、內(nèi)部時(shí)鐘、溫度傳感器等等重要的功能,如果說(shuō)它有的話,那就是外接了上去,這樣浪費(fèi)時(shí)間還浪費(fèi)錢,多不劃算!但是我們強(qiáng)大的STM32都已經(jīng)給你備齊,請(qǐng)君使用!
|