1. 前言
STM32目前市面上使用比較廣泛,資料多,接下來就介紹如何快速入門STM32,進行基礎開發。
這篇文章是STM32F103系列文章的第一篇,主要介紹開發環境的搭建、編程思路、如何查看原理圖、配置時鐘,配置GPIO口模式等等。
下面文字是來至STM32中文手冊,對STM32系列做了詳細的介紹:
STM32是一個微控制器產品系列的總稱,目前這個系列中已經包含了多個子系列,分別是: STM32小容 量產品、 STM32中容量產品、 STM32大容量產品和STM32互聯型產品;按照功能上的劃分,又可分為 STM32F101xx、 STM32F102xx和STM32F103xx系列;
● 小容量產品是指閃存存儲器容量在16K至32K字節之間的STM32F101xx、 STM32F102xx和 STM32F103xx微控制器。 ● 中容量產品是指閃存存儲器容量在64K至128K字節之間的STM32F101xx、 STM32F102xx 和STM32F103xx微控制器。 ● 大容量產品是指閃存存儲器容量在256K至512K字節之間的STM32F101xx和STM32F103xx 微控制器。 ● 互聯型產品是STM32F105xx和STM32F107xx微控制器。
整體來說,STM32F10x系列里所有型號芯片大多數功能模塊都是相同,主要是區別還是:引腳數量不一樣,FLASH閃存、RAM空間大小不一樣,還有就是功能模塊的數量不一樣。 配置高的芯片,引腳多,功能模塊多。
配置低的型號,引腳自然就少,功能模塊就少。 但是只要有這個功能模塊,所有型號的代碼都是一樣的編寫方式。所以,STM32F10x系列里所有型號代碼都是通用的。
目前STM32開發方式主要由3種:寄存器、標準庫、HAL 庫。 其中HAL 庫是目前意法半導體主推的開發方式,有 STM32CubeMx軟件加持,可以一鍵生成keil工程,圖形化編程非常方便,資源網上也有很多。
當前這個系列文章的STM32開發主要是選擇寄存器方式開發,寄存器開發優點是: 代碼較少、整體比較精簡,運行效率較高。但是學習成本、入門成本、調試難度比HAL 庫要難一些,因為使用寄存器開發,需要不斷的看芯片手冊,了解寄存器每個位的詳細功能,需要對芯片寄存器非常熟悉。但是寄存器開發相對比較通用,所有的芯片都支持寄存器開發,了解寄存器開發之后,對優化庫函數、HAL庫的效率、對其他芯片編程、入門Linux驅動開發、了解硬件等都有一定的幫助。
2. 開發前準備
入門STM32開發,首先需要準備一塊開發板,拿到開發板的原理圖、下載STM32的中文參考手冊,下載一個串口下載軟件、準備一臺windows電腦安裝keil5軟件。
開發板淘寶很多,推薦買:搭載STM32F103ZET6芯片的板子,可以買系統板也可以買開發板,系統板的板載資源少,引腳都引出來的,可以自己買模塊擴展;開發板板載資源較多,引腳基本也是引出來的,板子的價格比較貴,購買可以參考正點原子、野火等一些廠家的板子。 一般購買板子之后,都有配套的資料包:原理圖、手冊都有了。
STM32支持st-link、jlink、串口等多種下載方式,其中成本比較低的就是串口下載,不需要購買額外的硬件,生成hex文件之后,通過串口下載到開發板運行,如果hex文件較大,下載速度比較慢。如果資金允許,購買st-link、jlink下載更加快,調試更加方便。
keil軟件最新版可以在這里下載:http://www.myir-tech.com/download.asp?nclassid=108&anclassid=71
下載后,根據提示,一直點擊next即可。軟件安裝在英文目錄下,防止出現一些不必要的麻煩。
3. 點亮LED燈
準備工作就緒之后,下面就入門STM32,點亮LED燈。
拿到開發板先看一下LED原理圖,找到LED的硬件接線位置。
關于keil軟件如何新建STM32工程的文章之前是寫過的,詳細步驟看這里: https://blog.csdn.net/xiaolong1126626497/article/details/119879328
點亮LED燈,需要控制STM32的GPIO口輸出指定的電平,STM32GPIO口編程步驟分為:
開時鐘
配置GPIO口模式
控制GPIO口輸出
中文參考手冊里的第6章和第8章分別介紹了時鐘寄存器和GPIO口配置寄存器,主要看這兩章節即可。
GPIO口模式配置寄存器有兩個:CRL和CRH,一個IO口由4個二進制位表示,STM32是32位的MCU,一個寄存器是32位,GPIO口分為GPIOA,GPIOB,GPIOC等很多組,每一組的GPIO口的數量是16個。所以要配置一組GPIO口的模式需要64個二進制位,所以就分成了兩個寄存器來表示。 CRL配置0~7的GPIO口,CRH就配置8~15的IO口。
如果GPIO口作為普通的輸出,一般配置位置推挽輸出,如果作為按鍵這種輸入檢測硬件,一般配置為上下拉輸入。如果需要使用GPIO口內置的功能輸出,就配置為復用功能推挽輸出。
配置LED燈對應的GPIO口示例代碼:
/*
函數功能: LED初始化
硬件連接: PB6 PB7 PB8 PB9
特性: 低電平點亮
*/
void LED_Init(void)
{
//開時鐘
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;
}
-
微控制器
+關注
關注
48文章
7552瀏覽量
151426 -
led燈
+關注
關注
22文章
1592瀏覽量
108006 -
STM32
+關注
關注
2270文章
10900瀏覽量
356045 -
STM32F103
+關注
關注
33文章
477瀏覽量
63661
發布評論請先 登錄
相關推薦
評論