【STM32F103筆記】1、搭建開發環境

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文件夾下新建如下三個文件夾:CMSISFWLIBUSER
    在這裏插入圖片描述
    其中CMSIS與官方庫文件夾名稱一致,爲Cortex Microcontroller Software Interface Standard的縮寫;FWLIB爲Firmware Library即固件庫縮寫,存放STM32各類外設函數;USER存放用戶編寫的程序文件。文件夾命名並無要求,看個人習慣。

  • 複製庫文件

    • 將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的:
      core_cm3.ccore_cm3.h複製到CMSIS文件夾中;
    • 將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的:
      startup文件夾、stm32f10x.hsystem_stm32f10x.csystem_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.cstm32f10x_conf.hstm32f10x_it.cstm32f10x_it.h複製到USER文件夾中。

    複製完成後,各個文件夾中如圖:
    在這裏插入圖片描述

  • 打開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中新建STARTUPUSERCMSISFWLIB四個文件夾,完成後先不關閉,還要添加庫文件,如圖所示:
    在這裏插入圖片描述

  • 添加庫文件,選中一個文件夾,點擊Add Files:

    • STARTUP中添加\CMSIS\startup\arm\ startup_stm32f10x_hd.s(注意選擇文件類型),點擊Add添加後再點擊Close關閉,如圖所示:
      在這裏插入圖片描述
    • 同理在USER中添加\USER\ main.cstm32f10x_it.c
    • CMSIS中添加\CMSIS\ core_cm3.csystem_stm32f10x.c
    • FWLIB中添加\FWLIB\src中所有.c文件
  • 添加完成後點擊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
      在這裏插入圖片描述
  • 然後打開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亮(紅色爲電源指示燈):
在這裏插入圖片描述

完結撒花✿✿ヽ(°▽°)ノ✿

發佈了1 篇原創文章 · 獲贊 2 · 訪問量 450
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章