0%

2-2新建工程

.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm目录下的文件为启动文件,复制到工程目录,新建Start文件夹,并粘贴启动文件。

.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
目录下的stm32f10x.h是STM32的外设寄存器描述文件,用于描述STM32有哪些寄存器和它对应的地址。
system_stm32f10x.csystem_stm32f10x.h主要是用来配置时钟的。
这三个文件粘贴到Start文件夹下。

因为STM32是内核和内核外围的设备组成的,且内核的寄存器描述文件和外围设备的描述文件不是在一起的,还需要添加内核寄存器描述文件。
.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport目录下的core_cm3.ccore_cm3.h就是内核寄存器描述,还带了内核的配置函数。
这两个文件粘贴到Start文件夹下。

在Keil软件中,选择添加存在的文件,添加启动文件(startup_stm32f10x_md.s),和剩下的.c和.h文件。
Start目录下的文件
最后还要再工程选项里添加上Start文件夹的头文件路径,点击魔术棒,进入C/C++,在Include Paths栏中,把Start路径添加进去。

接下来新建User文件夹,在工程目录中新建User文件夹,然后再Keil中,Target点击右键,添加组,改个名字,叫User,在User右键,点击添加新文件,选择C文件,名字叫main。

⚠ 路径选择User文件夹,否则默认放在工程根目录。

右键选择插入头文件,选择stm32f10x.h

⚠ 最后一行必须为空行,否则会报警告。

📖点击扳手按钮,在Editor下,Encoding编码格式选为UTF-8,否则可能会出现乱码问题。

配置调试器:点击魔术棒按钮,Debug,默认的调试器为ULINK,改为STLINK。再点击右侧的Settings按钮,在Flash Download下,勾选Reset and Run。选择此项,下载程序后会立刻复位并运行,方便调试。

在工程目录下新建文件夹,LIbrary,来存放库函数。
.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src目录下,misc.c为内核的库函数,其他为内核外的外设库函数,全部复制到Library文件夹下。
再打开.\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc,该目录下的内容为库函数的头文件,全部复制到Library文件夹下。
在keil软件添加组,改名Library,添加存在的文件,添加Library下全部文件。

进入\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录,复制stm32f10x_conf.hstm32f10x_it.cstm32f10x_it.h。粘贴到User目录下。

stm32f10x_conf.h用于配置库函数头文件包含关系和检查函数定义。
it文件用来存放中断函数。

回到Keil软件,添加刚才的3个文件。

打开Keil工程选项(魔术棒),在C/C++中Define添加USE_STDPERIPH_DRIVER用来包含标准外设库。

在Include Paths中,添加User和Library文件夹。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stm32f10x.h"                  // Device header

int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//用来使能或失能APB2的外设时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);//配置端口模式,第一个是选择哪个GPIO,第二个是选择结构体
// GPIO_SetBits(GPIOC,GPIO_Pin_13);//将PC13口置为高电平
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//将PC13口置为低电平
}

新建工程步骤
•建立工程文件夹,Keil中新建工程,选择型号
•工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹
•工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里
•工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹
•工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
•工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run

工程架构