Keil新建空白工程

文章中所涉及的代码源文件,如果在官方提供的固件库无法找到这些文件,可以点击下方链接进行下载:


  • 链接:https://pan.baidu.com/s/1sVpx4qF47chmCbjiUON6kQ?pwd=7orp
    提取码:7orp

  • 如果链接失效,可到个人页面的下载内容里面下载

1、在建立工程前,先在电脑某个目录下新建一个文件夹(存放后面建立的工程,这里命名为Template),然后再文件夹下再建一个文件夹USER(存放代码工程文件)。

Template文件夹
USER文件夹

2、在Keil的菜单栏,Project→New uVision Project,将工程文件存放在刚才建立的Template文件夹下的USER目录下面,工程文件命名为Template后,点击保存。接下来出现一个选择MCU的界面,就是选择芯片型号,这里选择STM32F103ZE,然后点击OK(一定要安装对应的器件pack,才会显示这些内容,如果没得选择,可以去官网下载对应的pack)。(这里在命名工程名称的时候手误,把Template写成Tempalte,但没关系,能理解就行)

image2
image3
image4

3、该页面为MDK5新增的一个功能,可以选择添加需要的组件,从而方便构建开发环境,这里不添加组件,直接Cancel。

image5

4、完成上述步骤后,Keil的界面如图所示,这里已经建了一个框架,但还没有添加启动代码以及.c文件等。

image6

5、打开Template文件夹下的USER目录,Tempalte.uvprojx是工程文件,非常关键,不能轻易删除。DebugConfig、Listings和Objects文件夹是MDK自动生成的文件夹,DebugConfig文件夹用于存储一些调试配置文件,Listings和Objects文件夹用于存放编译过程产生的中间文件,这里把Listings和Objects文件夹删除,在下一步骤中新建一个OBJ文件夹,用于存放编译中间文件(不删除也没关系,只是不用它而已)。

image7

6、在Template文件夹下,新建3个文件夹,分别是CORE、OBJ和STM32F10x_FWLib,CORE用来存放核心文件和启动文件,OBJ用来存放编译过程产生的文件以及hex文件,STM32F10x_FWLib用来存放ST官方提供的库函数源码文件,已有的USER目录除了用来存放工程文件外,还用来存放主函数文件main.c以及其他包括system_stm32f10x.c等等。

image8

7、将官方固件库包里的源码文件复制到我们创建的STM32F10x_FWLib目录下,src存放的是固件库的.c文件,inc存放的是对应的头文件。

image9
image10
image11

8、将固件库包里面相关的启动文件复制到我们创建的CORE目录下。

image12

9、将固件库包里面的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到我们创建的USER目录下。

image13

10、打开Keil,点击Target 1,鼠标右击,选中Manage Project items,在弹出来的窗口下,在最左侧的Project Targets一栏,将Target 名字修改为 Template,然后在Groups 一栏删掉一个Source Group1,建立三个 Groups,分别是:USER,CORE,FWLIB,然后点击OK,就可以看到更改后的Target名字以及Groups情况。

image14
image15
image16

11、往Group里面添加需要的文件,按照上一步的方法,鼠标右击,选中Manage Project items,在弹出来的窗口下,在Group一栏,选择USER,然后点击右下角的Add Files,定位到刚才建立的目录USER下,选中里面的.c文件,然后点击Add,再点击Close就可以在Files一栏看到包含刚才添加的文件。

image17
image18
image19
image20

12、继续在Group一栏,选择CORE,然后点击右下角的Add Files,定位到刚才建立的目录CORE下,将文件类型里面改为All Files(.),选中里面的.c文件,以及启动文件startup_stm32f10x_hd.s,然后点击Add,再点击Close。(这里如果不将文件类型里面改为All Files(.),则看不到启动文件startup_stm32f10x_hd.s)

image21
image22
image23

13、继续在Group一栏,选择FWLIB,然后点击右下角的Add Files,定位到刚才建立的目录STM32F10x_FWLib下,将src目录下的.c文件全部选中(inc目录下存放的是对应的.h文件),然后点击Add,再点击Close。添加完3个Group里面的文件后,点击OK,即可在MDK的工程目录下看到刚才所添加的文件。

image24
image25
image26
image27

14、点击魔术棒,在“Output”选项下点击“Select folder for objects…”,然后选择上面创建的OBJ目录。(此处如果不设置Output路径,那么默认的编译文件存放路径就是MDK在USER文件夹下自动生成的Objects目录和Listings目录)

image28
image29

15、点击魔术棒,在“C/C++”选项下点击Include Paths右边的“…”,在弹出的path对话框里,将工程所需要用到的.h文件的所在路径包含进去。(由于keil只会在一级目录查找,因此在选择路径时,要选中该头文件所在位置的最后一级目录,即如果目录下面还有子目录,一定要定位到最后一级子目录)

image30
image31

16、点击魔术棒,在“C/C++”选项下,将STM32F10X_HD,USE_STDPERIPH_DRIVER填在Define里面。(如果使用的芯片为中容量,则把STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD)

image32

17、点击魔术棒,在“Output”选项下,把三个选项打上勾,其中Create HEX file是编译生成hex文件,Browser Information是查看变量和函数定义。

image33

18、打开工程USER目录下的main.c文件,复制下面代码到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); //使能 PB,PE 端口时钟
	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);
	}
}

到这里工程模板已经建立完成,但可以继续完善

19、在Template文件夹下,新建SYSTEM目录,SYSTEM存放每个实验都需要用到的共用代码(直接在固件库里面拷贝就可以),接着与上述步骤一样,添加Group,往Group里面添加需要的文件,点击OK;然后点击魔术棒,在C/C++选项下,添加新增.h文件所在的最后一级目录,点击OK。

image34
image35image36
image37
image38
image39

20、编译一下,可以看到编译结果为 0 error(s), 0 Warning(s).

image40

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值