• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

STM32F103系列開(kāi)發(fā)_點(diǎn)亮LED燈

12小時(shí)前
279
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

更多詳細(xì)資料請(qǐng)聯(lián)系.docx

共1個(gè)文件

1. 前言

STM32目前市面上使用比較廣泛,資料多,接下來(lái)就介紹如何快速入門(mén)STM32,進(jìn)行基礎(chǔ)開(kāi)發(fā)。

這篇文章是STM32F103系列文章的第一篇,主要介紹開(kāi)發(fā)環(huán)境的搭建、編程思路、如何查看原理圖、配置時(shí)鐘,配置GPIO口模式等等。

下面文字是來(lái)至STM32中文手冊(cè),對(duì)STM32系列做了詳細(xì)的介紹:

STM32是一個(gè)微控制器產(chǎn)品系列的總稱,目前這個(gè)系列中已經(jīng)包含了多個(gè)子系列,分別是: STM32小容量產(chǎn)品、 STM32中容量產(chǎn)品、 STM32大容量產(chǎn)品和STM32互聯(lián)型產(chǎn)品;按照功能上的劃分,又可分為STM32F101xx、 STM32F102xx和STM32F103xx系列;

● 小容量產(chǎn)品是指閃存存儲(chǔ)器容量在16K至32K字節(jié)之間的STM32F101xx、 STM32F102xx和STM32F103xx微控制器。
● 中容量產(chǎn)品是指閃存存儲(chǔ)器容量在64K至128K字節(jié)之間的STM32F101xx、 STM32F102xx和STM32F103xx微控制器。
● 大容量產(chǎn)品是指閃存存儲(chǔ)器容量在256K至512K字節(jié)之間的STM32F101xx和STM32F103xx微控制器。
● 互聯(lián)型產(chǎn)品是STM32F105xx和STM32F107xx微控制器。

整體來(lái)說(shuō),STM32F10x系列里所有型號(hào)芯片大多數(shù)功能模塊都是相同,主要是區(qū)別還是:引腳數(shù)量不一樣,F(xiàn)LASH閃存、RAM空間大小不一樣,還有就是功能模塊的數(shù)量不一樣。 配置高的芯片,引腳多,功能模塊多。

配置低的型號(hào),引腳自然就少,功能模塊就少。 但是只要有這個(gè)功能模塊,所有型號(hào)的代碼都是一樣的編寫(xiě)方式。所以,STM32F10x系列里所有型號(hào)代碼都是通用的。

目前STM32開(kāi)發(fā)方式主要由3種:寄存器、標(biāo)準(zhǔn)庫(kù)、HAL 庫(kù)。 其中HAL 庫(kù)是目前意法半導(dǎo)體主推的開(kāi)發(fā)方式,有 STM32CubeMx軟件加持,可以一鍵生成keil工程,圖形化編程非常方便,資源網(wǎng)上也有很多。

當(dāng)前這個(gè)系列文章的STM32開(kāi)發(fā)主要是選擇寄存器方式開(kāi)發(fā),寄存器開(kāi)發(fā)優(yōu)點(diǎn)是: 代碼較少、整體比較精簡(jiǎn),運(yùn)行效率較高。但是學(xué)習(xí)成本、入門(mén)成本、調(diào)試難度比HAL 庫(kù)要難一些,因?yàn)槭褂眉拇嫫鏖_(kāi)發(fā),需要不斷的看芯片手冊(cè),了解寄存器每個(gè)位的詳細(xì)功能,需要對(duì)芯片寄存器非常熟悉。但是寄存器開(kāi)發(fā)相對(duì)比較通用,所有的芯片都支持寄存器開(kāi)發(fā),了解寄存器開(kāi)發(fā)之后,對(duì)優(yōu)化庫(kù)函數(shù)、HAL庫(kù)的效率、對(duì)其他芯片編程、入門(mén)Linux驅(qū)動(dòng)開(kāi)發(fā)、了解硬件等都有一定的幫助。

2. 開(kāi)發(fā)前準(zhǔn)備

入門(mén)STM32開(kāi)發(fā),首先需要準(zhǔn)備一塊開(kāi)發(fā)板,拿到開(kāi)發(fā)板的原理圖、下載STM32的中文參考手冊(cè),下載一個(gè)串口下載軟件、準(zhǔn)備一臺(tái)windows電腦安裝keil5軟件。

開(kāi)發(fā)板淘寶很多,推薦買:搭載STM32F103ZET6芯片的板子,可以買系統(tǒng)板也可以買開(kāi)發(fā)板,系統(tǒng)板的板載資源少,引腳都引出來(lái)的,可以自己買模塊擴(kuò)展;開(kāi)發(fā)板板載資源較多,引腳基本也是引出來(lái)的,板子的價(jià)格比較貴,購(gòu)買可以參考正點(diǎn)原子、野火等一些廠家的板子。 一般購(gòu)買板子之后,都有配套的資料包:原理圖、手冊(cè)都有了。

STM32支持st-link、jlink、串口等多種下載方式,其中成本比較低的就是串口下載,不需要購(gòu)買額外的硬件,生成hex文件之后,通過(guò)串口下載到開(kāi)發(fā)板運(yùn)行,如果hex文件較大,下載速度比較慢。如果資金允許,購(gòu)買st-link、jlink下載更加快,調(diào)試更加方便。

keil軟件最新版可以在這里下載:http://www.myir-tech.com/download.asp?nclassid=108&anclassid=71

image-20220211100907094

下載后,根據(jù)提示,一直點(diǎn)擊next即可。軟件安裝在英文目錄下,防止出現(xiàn)一些不必要的麻煩。

3. 點(diǎn)亮LED燈

準(zhǔn)備工作就緒之后,下面就入門(mén)STM32,點(diǎn)亮LED燈。

拿到開(kāi)發(fā)板先看一下LED原理圖,找到LED的硬件接線位置。

image-20220211101603486

關(guān)于keil軟件如何新建STM32工程的文章之前是寫(xiě)過(guò)的,詳細(xì)步驟看這里: https://blog.csdn.net/xiaolong1126626497/article/details/119879328

點(diǎn)亮LED燈,需要控制STM32的GPIO口輸出指定的電平,STM32GPIO口編程步驟分為:

  1. 開(kāi)時(shí)鐘
  2. 配置GPIO口模式
  3. 控制GPIO口輸出

中文參考手冊(cè)里的第6章和第8章分別介紹了時(shí)鐘寄存器和GPIO口配置寄存器,主要看這兩章節(jié)即可。

image-20220211102155405

image-20220211102348433

GPIO口模式配置寄存器有兩個(gè):CRL和CRH,一個(gè)IO口由4個(gè)二進(jìn)制位表示,STM32是32位的MCU,一個(gè)寄存器是32位,GPIO口分為GPIOA,GPIOB,GPIOC等很多組,每一組的GPIO口的數(shù)量是16個(gè)。所以要配置一組GPIO口的模式需要64個(gè)二進(jìn)制位,所以就分成了兩個(gè)寄存器來(lái)表示。 CRL配置07的GPIO口,CRH就配置815的IO口。

如果GPIO口作為普通的輸出,一般配置位置推挽輸出,如果作為按鍵這種輸入檢測(cè)硬件,一般配置為上下拉輸入。如果需要使用GPIO口內(nèi)置的功能輸出,就配置為復(fù)用功能推挽輸出。

配置LED燈對(duì)應(yīng)的GPIO口示例代碼:

/*
函數(shù)功能: LED初始化
硬件連接: PB6 PB7 PB8 PB9
特性: 低電平點(diǎn)亮
*/
void LED_Init(void)
{
    //開(kāi)時(shí)鐘
    RCC->APB2ENR|=1<<3;
    //配置GPIO口
    GPIOB->CRL&=0x00FFFFFF;
    GPIOB->CRL|=0x22000000;
    GPIOB->CRH&=0xFFFFFF00;
    GPIOB->CRH|=0x00000022;
    //上拉
    GPIOB->ODR|=1<<6;
    GPIOB->ODR|=1<<7;
    GPIOB->ODR|=1<<8;
    GPIOB->ODR|=1<<9;
}
  • 更多詳細(xì)資料請(qǐng)聯(lián)系.docx
    下載

相關(guān)推薦

方案定制

去合作
方案開(kāi)發(fā)定制化,2000+方案商即時(shí)響應(yīng)!