2 新建 STM32 工程#
2 新建 STM32 工程#
2.1 STM32F10X 型號分類及縮寫#
STM32F103C8T6
: C8T6
的 flash 是 64K,所以我們選擇 MD 的啟動文件
縮寫 | 釋義 | Flash容量 | 型號 |
---|---|---|---|
LD_VL | 小容量產品超值系列 | 16~32K | STM32F100 |
MD_VL | 中容量產品超值系列 | 64~128K | STM32F100 |
HD_VL | 大容量產品超值系列 | 256~512K | STM32F100 |
LD | 小容量產品 | 16~32K | STM32F101/102/103 |
MD | 中容量產品 | 64~128K | STM32F101/102/103 |
HD | 大容量產品 | 256~512K | STM32F101/102/103 |
XL | 加大容量產品 | 大於 512K | STM32F101/102/103 |
CL | 互聯型產品 | - | STM32F105/107 |
2.2 新建工程步驟#
建立工程資料夾,Keil 中新建工程,選擇型號
工程資料夾裡建立 Start、Library、User 等資料夾,複製固件庫裡面的文件到工程資料夾
工程裡對應建立 Start、Library、User 等同名稱的分組,然後將資料夾內的文件添加到工程分組裡
工程選項,C/C++,Include Paths 內聲明所有包含頭文件的資料夾
工程選項,C/C++,Define 內定義 USE_STDPERIPH_DRIVER,其他的工程在這裡還聲明了一個STM32F10x_MD
的字串,但Keil5
在新建工程後自動幫我們聲明好了這個,因此不用再重複聲明
工程選項,Debug,下拉列表選擇對應調試器,Settings,Flash Download 裡勾選 Reset and Run
2.3 工程架構圖#
2.4 keil 5 新建工程結構圖#
Start
資料夾:#
.s
啟動文件,在 Keil 軟件裡只能添加一個,本次我們選擇startup_stm32f10x_md.s
啟動文件
stm32f10x.h
的外設寄存器描述文件,作用與 51 單片機的REGX52.h
一樣,用來描述 STM32 有哪些寄存器和它對應的地址
system_stm32f10x.c
和system_stm32f10x.h
文件是用來配置時鐘的,STM32
主頻72MHz
就是 system 文件裡的函數配置的
core_cm3.c
和core_cm3.h
文件是內核的寄存器描述,它還帶了一些內核的配置函數,所以多了個.c
文件,
然後在工程選項裡添加上 Start 這個資料夾的頭文件路徑,不然軟件找不到.h
文件
Library
資料夾:#
inc
和src
兩個資料夾裡面是 ST 公司封裝好的.h
和.c
庫文件
System
資料夾:#
System 資料夾內存放系統的資源,例如delay.c
delay.h
User
資料夾:#
main.c
文件
stm32f10x_conf.h
文件是用來配置庫函數頭文件包含關係的,裡面還有個用來參數檢查的函數定義,這是所有庫函數都需要的
stm32f10x_it.c
和stm32f10x_it.h
文件是用來存放 interrupt 中斷函數的
2.5 使用STLink
連接stm32
單片機#
接線方式:
ST-LINK V2 | STM32 |
---|---|
3.3V | 3V3 |
SWDIO | SWIO |
SWCLK | SWCLK |
GND | GND |
main.c
#include "stm32f10x.h" // Device header
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //打開C口時鐘並使能
//定義一個結構體
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽輸出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; // 13號引腳
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz速度
//配置端口模式
GPIO_Init(GPIOC, &GPIO_InitStructure);
//設置端口高低電平
//GPIO_SetBits(GPIOC, GPIO_Pin_13);//高電平
GPIO_ResetBits(GPIOC, GPIO_Pin_13);//低電平
while(1)
{
}
}