STM32F103介紹
STM32F系列是意法半導體(ST)公司的32位ARM微控制器,內核採用Cortex-M3,其它方面的說明可以查閱相關資料。
STM32F103C8T6最小系統板
這裏用的是筆者購買的兩款STM32F103C8T6的最小系統板,如下圖:
兩款最小系統板很相似,左側都是JLink插口,晶振頻率均爲8MHz,右側佈置有供電接口、復位按鍵、啓動方式選擇跳帽(圖中綠色和紅色的小東西,下載程序用),並且把引腳在周圍引出。黑色的板子把OLED接口留了出來並且右側多設置了一個按鍵,藍色的板子則是給出了串口等接口。
STM32F103C8T6命名說明
符號 | 說明 |
---|---|
STM32 | ST公司採用ARM Cortex-M3內核的32位微控制器 |
F | 芯片子系列 |
103 | 增強型系列 |
C | 引腳數,T:36,C:48,R:64,V:100,Z:144,I:176 |
8 | 內部Flash容量(單位:字節),6:32K,8:64K,B:128K,C:256K,D:384K,E:512K,G:1M |
T | 芯片封裝,H:BGA,T:LQFP,U:VFQFPN |
6 | 工作溫度,6: -40 ~ 85℃,7: -40 ~ 105℃ |
因此STM32F103C8T6即代表ST公司採用ARM Cortex-M3內核的增強型32位微處理器,引腳數爲48,內部Flash容量爲64KBytes,芯片封裝爲LQFP,正常工作溫度爲-40 ~ 85℃。
說明:Flash容量16 ~ 32K爲小容量,64 ~ 128K爲中等容量,256 ~ 512K爲大容量。
開發環境搭建
這裏使用Keil uVision5,具體安裝就略過了(嘿嘿)。
安裝完成後打開軟件,是這樣滴:
但是Keil uVision5並不帶有STM32F103的軟件包(Software Packs),因此需要在安裝結束後再安裝Keil.STM32F1xx_DFP.2.1.0.pack軟件包(這個網上搜一搜應該能找得到,或者私信我給你發也行),直接雙擊安裝就行,安裝完成後再重新打開Keil uVision5就完成了。
建立第一個工程
STM32可以直接控制寄存器進行程序開發,但要求對芯片的寄存器掌握熟悉,並且開發速度會比較慢,但優點是運行效率更高;對於剛入門或者爲了開發方便的同志們來說,採用庫開發相對更舒服一些,並且可以在程序定型後再將庫開發的版本轉換成寄存器版本。在這裏將使用官方庫進行開發。
獲取官方庫
使用庫開發讓人放心的一點就是,這個庫是意法半導體(ST)公司官方給出的,並且Free(嘿嘿)。
打開ST官網,找到產品->微控制器->STM32主流MCU
然後找到工具與軟件->嵌入式軟件->MCU及MPU嵌入式軟件->STM32 Standard Peripheral Libraries
因爲選用的是STM32F10x系列,所以根據描述和支持器件的說明,往下拉找到STSW-STM32054,點擊打開,再點擊Open software page
下拉找到獲取軟件,註冊或者登錄ST官網就可以下載官方庫了。
下載得到的官方庫解壓:
編寫程序時主要用到其中的Libraries文件夾。stm32f10x_stdperiph_lib_um.chm是幫助文檔,對後續開發十分有幫助,可以方便的查閱數據結構、函數說明等。
建立工程
推薦單獨建立一個工程文件夾用於存放所有程序,並在此文件夾下新建0-Template文件夾用於保存工程模板,以後只需要複製工程模板就可以進行下一個程序的編寫,而無需再次配置工程。
下面的關鍵步驟會進行標記,其它文字爲說明性文字。
-
在0-Template文件夾下新建如下三個文件夾:CMSIS、FWLIB、USER:
其中CMSIS與官方庫文件夾名稱一致,爲Cortex Microcontroller Software Interface Standard的縮寫;FWLIB爲Firmware Library即固件庫縮寫,存放STM32各類外設函數;USER存放用戶編寫的程序文件。文件夾命名並無要求,看個人習慣。 -
複製庫文件
- 將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的:
core_cm3.c、core_cm3.h複製到CMSIS文件夾中; - 將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的:
startup文件夾、stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h複製到CMSIS文件夾中; - 將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下的:
inc文件夾、src文件夾複製到FWLIB文件夾中; - 將STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的:
main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h複製到USER文件夾中。
複製完成後,各個文件夾中如圖:
- 將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的:
-
打開Keil uVision5,點擊Project->new uVision Project,瀏覽到0-Template文件夾,輸入工程名稱,這裏取Template,保存:
-
將會彈出設備選擇框,如果沒有安裝Keil.STM32F1xx_DFP.2.1.0.pack軟件包則不會顯示STM32F1 Series,需要安裝軟件包後再重新打開Keil uVision5建立工程,這裏選擇STM32F103C8,點擊OK:
將會彈出環境設置選框,直接點擊右上角關閉即可:
至此,新工程已經建立好,下面進行配置 -
首先設置各個文件夾及文件,在Target 1上右擊選擇Manager Project items或者直接點擊圖標
-
在彈出的對話框裏進行設置,將Project Targets修改爲Template,在Groups中新建STARTUP、USER、CMSIS、FWLIB四個文件夾,完成後先不關閉,還要添加庫文件,如圖所示:
-
添加庫文件,選中一個文件夾,點擊Add Files:
- 在STARTUP中添加\CMSIS\startup\arm\ startup_stm32f10x_hd.s(注意選擇文件類型),點擊Add添加後再點擊Close關閉,如圖所示:
- 同理在USER中添加\USER\ main.c、stm32f10x_it.c;
- 在CMSIS中添加\CMSIS\ core_cm3.c、system_stm32f10x.c;
- 在FWLIB中添加\FWLIB\src中所有.c文件。
- 在STARTUP中添加\CMSIS\startup\arm\ startup_stm32f10x_hd.s(注意選擇文件類型),點擊Add添加後再點擊Close關閉,如圖所示:
-
添加完成後點擊OK,左側工程文件樹狀圖如圖:
-
然後對工程進行設置,在Template上右擊選擇Options for Target ‘Template’ 或者直接點擊圖標:
-
在彈出的對話框中:
- Target選項卡中設置晶振頻率爲8MHz(與最小系統板晶振頻率一致):
- Output選項卡中勾選Create HEX File,即生成下載用的.hex程序文件:
- C/C++ 選項卡中Define添加USE_STDPERIPH_DRIVER,Include Paths中添加路徑:.\CMSIS;.\FWLIB\inc;.\USER:
- Target選項卡中設置晶振頻率爲8MHz(與最小系統板晶振頻率一致):
-
然後打開main.c文件,刪除原有內容,添加代碼:
#include "stm32f10x.h"
int main(void)
{
while(1);
}
即完成了模板工程的建立,可以進行編譯,結果如下:
沒有報錯的話(0 Error(s), 0 Warning(s) )就說明工程建立好啦(~ ̄▽ ̄)~
下面用程序測試一下
通過電路原理圖可知,藍色最小系統板上LED對應控制管腳爲PB8,也就是GPIOB的8引腳,且當引腳輸出低電平時,LED亮:
在main.c中輸入下列代碼:
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef GPIOInitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIOInitStruct.GPIO_Pin = GPIO_Pin_8;
GPIOInitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIOInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIOInitStruct);
GPIO_ResetBits(GPIOB, GPIO_Pin_8);
while(1);
}
編譯通過,0 Error(s), 0 Warning(s)
連接好最小系統板的UART1,並拔去跳帽,打開mcuisp.exe,點擊搜索串口選擇正確的串口,選擇生成的Template.hex程序文件,點擊開始編程進行下載:
下載完成後,插上跳帽重新上電或者按下復位鍵,程序運行,綠色LED亮(紅色爲電源指示燈):