7. 新建基于MDK的STM32工程模板
一。開發(fā)環(huán)境和固定庫版本
二。準(zhǔn)備工作
三。建立工程模板
1. 建立一個(gè)Template的文件夾
2.在Template文件夾下建立下面3個(gè)文件夾
CORE 用來存放核心文件和啟動(dòng)文件, OBJ 是用來存放編譯過程文件以及 hex 文件, STM32F10x_FWLib 文件夾顧名思義用來存放 ST 官方提供的庫函數(shù)源碼文件。USER 目錄除了用來放工程文件外,還用來存放主函數(shù)文件 main.c,以及其他包括 system_stm32f10x.c 等等。
3. 在STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver 下面,將目錄下面的 src,inc 文件夾 copy 到STM32F10x_FWLib 文件夾下面。
src 存放的是固件庫的.c 文件,inc 存放的是對(duì)應(yīng)的.h 文件。
4. 下面我們要將固件庫包里面相關(guān)的啟動(dòng)文件復(fù)制到我們的工程目錄 CORE 之下。
打開官方固件庫包,定位到目錄STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport 下面,將文件 core_cm3.c和文件 core_cm3.h 復(fù)制到 CORE 下 面 去 。
然 后 定 位 到 目錄STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm 下面,將里面 startup_stm32f10x_hd.s 文件復(fù)制到 CORE 下面。
不同容量的芯片使用不同的啟動(dòng)文件,芯片 STM32F103ZET6 是512k大容量芯片,所以選擇startup_stm32f10x_hd.s這個(gè)啟動(dòng)文件。
CORE文件夾下的文件
5.往USER文件夾下拷貝一些頭文件和源文件
定位到目錄:
STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x 下面將里面的三個(gè)文件 stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h,復(fù)制到我們的 USER目錄之下。
然后將
STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template 下面的 4 個(gè) 文件
main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 復(fù)制到 USER 目錄下面。
USER目錄下文件
6.新建工程
(1)將工程保存在USER目錄下,CPU選擇
(2)在文件分組中分別添加文件
7.選擇編譯后的文件輸出到OBJ文件夾中
8.添加宏定義標(biāo)識(shí)符
9.添加頭文件目錄
10.因?yàn)閙ain.c文件是從固件庫中copy過來的,所以把main.c中不用的語句全部去掉,添加進(jìn)下面的程序,另外注意最后一行要多出一個(gè)空行,否則有警告。
#include "stm32f10x.h"
void Delay(u32 count)
{
u32 i=0;
for(;i
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口時(shí)鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO 口速度為 50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化 GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 輸出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 推挽輸出
GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化 GPIO
61
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 輸出高
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
Delay(3000000);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
Delay(3000000);
}
}
編譯,成功!紅色LED和綠色LED交替閃爍
11. 給工程模板添加戰(zhàn)艦開發(fā)板的系統(tǒng)函數(shù)文件,包括delay,sys,usart方便今后調(diào)試程序。
原來程序中使用的延時(shí)函數(shù)是不精確的,可以使用原子開發(fā)的delay函數(shù)進(jìn)行精確延時(shí)。