Tangwx

Tangwx

博客网站

02. 新建STM32工程

2 新建 STM32 工程#

2 新建 STM32 工程#

2.1 STM32F10X 型號分類及縮寫#

STM32F103C8T6C8T6的 flash 是 64K,所以我們選擇 MD 的啟動文件

縮寫釋義Flash容量型號
LD_VL小容量產品超值系列16~32KSTM32F100
MD_VL中容量產品超值系列64~128KSTM32F100
HD_VL大容量產品超值系列256~512KSTM32F100
LD小容量產品16~32KSTM32F101/102/103
MD中容量產品64~128KSTM32F101/102/103
HD大容量產品256~512KSTM32F101/102/103
XL加大容量產品大於 512KSTM32F101/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 工程架構圖#

image-20220809173713894

2.4 keil 5 新建工程結構圖#

image-20220821155147410

Start資料夾:#

.s啟動文件,在 Keil 軟件裡只能添加一個,本次我們選擇startup_stm32f10x_md.s啟動文件

stm32f10x.h的外設寄存器描述文件,作用與 51 單片機的REGX52.h一樣,用來描述 STM32 有哪些寄存器和它對應的地址

system_stm32f10x.csystem_stm32f10x.h文件是用來配置時鐘的,STM32主頻72MHz就是 system 文件裡的函數配置的

core_cm3.ccore_cm3.h文件是內核的寄存器描述,它還帶了一些內核的配置函數,所以多了個.c文件,

然後在工程選項裡添加上 Start 這個資料夾的頭文件路徑,不然軟件找不到.h文件

Library資料夾:#

incsrc兩個資料夾裡面是 ST 公司封裝好的.h.c庫文件

System資料夾:#

System 資料夾內存放系統的資源,例如delay.c delay.h

User資料夾:#

main.c文件

stm32f10x_conf.h 文件是用來配置庫函數頭文件包含關係的,裡面還有個用來參數檢查的函數定義,這是所有庫函數都需要的

stm32f10x_it.cstm32f10x_it.h 文件是用來存放 interrupt 中斷函數的

2.5 使用STLink連接stm32單片機#

接線方式:

image

ST-LINK V2STM32
3.3V3V3
SWDIOSWIO
SWCLKSWCLK
GNDGND

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)
	{
		
	}
}

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。