STM32F10x系列官方固件包免费下载链接
新建STM32工程
步骤一:创建工程文件
1,新建工程目录temp
2,在工程目录temp下面新建四个文件夹
(1)USER:存放工程文件(template)、主函数文件main.c、以及包括system_stm32f10x.c等等。
(2)CORE:存放核心文件和启动文件。
(3)OBJ:存放编译过程文件以及hex文件。
(4)STM32F103:存放ST官方提供的库函数源码文件。
工程目录预览:
3,将新建工程命名为template并保存在USER文件夹下,按图片步骤建立工程
步骤二:导入stm32固件库中的文件
1,打开STM32F10x固件库文件(免费下载链接在文章最上面)
(2)定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下面,将文件core_cm3.c和文件core_cm3.h复制到CORE下面去 。然后定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a rm下面,将里面 startup_stm32f10x_hd.s文件复制到CORE下面。这里我们我之前已经解释了不同容量的芯片使用不同的启动文件,我们的芯片STM32F103ZET6是大容量芯片,所以选择这个启动文件。
具体如下:
(3)定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面,将里面的三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的USER目录之下。然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下面的4个文件 main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到USER目录下面。
效果如下:(如果有LIistings和Objects文件夹没有影响)
步骤三:将前面所有的文件添加到工程中
1,在工程下加入三个文件夹USER,CORE,FYLIB
2)用同样的方法,分别向USER和CORE文件夹添加相应文件。这里我们的CORE下面需要添加的文件为core_cm3.c,startup_stm32f10x_hd.s (注意,默认添加的 时候文件类型为.c,也就是添加startup_stm32f10x_hd.s启动文件的时候,你需要选择文件类型为All files才能看得到这个文件),USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c,最后点击OK。
效果如下:
2,设置hex文件生成的位置,头文件路径以及宏定义
(1)设置hex生成位置:点击魔法棒,选择Output,点击Select Folder for Objects,定位在OBJ文件夹下(如果不设置Output,MDK5编译产生的文件将会存放在Listings和Objects文件夹中)。
(2)设置头文件路径以及宏定义全局变量:点击魔法棒,选择c/c++,点击Include Path右边的按钮,会弹出一个设置Path的窗口,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级子目录。然后点击 OK,回到c/c++界面后然后填写 “STM32F10X_HD,USE_STDPERIPH_DRIVER”到Define输入框里面。这里解释一下,如果你用的是中容量那么STM32F10X_HD修改为STM32F10X_MD,小容 量修改为STM32F10X_LD。然后点击 OK。
具体如下:
步骤四:修改主函数并生成hex文件
1,将USER下的main.c中的代码改为下面的代码(为正点原子提供的代码):
#include "stm32f10x.h"
void Delay(u32 count)
{
u32 i=0;
for(;i<count;i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
RCC_APB2Periph_GPIOE, ENABLE); //使用PE,PB端口时钟
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
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);
}
}
2,生成hex文件
(1)点击魔术棒,进入配置菜单,选择Output。然后勾上下三个选项。其中Create HEX file是编译生成hex文件,Browser Information是可以查看变量和函数定义。
(2)设置好上面的步骤后将hex文件用flymcu软件下载到单片机中可以观察到两个LED灯交替闪烁。
步骤五:添加SYSTEM文件
SYSTEM文件
1,按照步骤三,在工程中新建一个SYSTEM文件夹,并且将提供的SYSTEM文件中delay.c,sys.c,usart.c添加到工程文件夹SYSTEM中。
效果如下:
2,根据步骤三2中设置头文件方式将SYSTEM文件夹下的子目录delay,sys,usart加入到Path中。
具体如下:
到此新建工程模板已经设置好了,最后记得要保存所有文件,要不然是白忙活一场。