下图是STM32系列的规格与命名范式。
下面开始正题,如何从0开始创建一个STM32的软件工程模板。
新建一个文件夹作为工程文件的存储目录,鄙人自己是将其命名为test1的,下同。
将固件库中的Libraries文件夹复制粘贴到test1。
在test1文件夹中:
新建Output文件夹(生成的输出文件,包括hex文件)
新建Startup文件夹(启动文件)
新建User文件夹(自己编写的main函数、中断等)
新建App文件夹(保存编写的外设)
在固件库\Project\STM32F10x_StdPeriph_Template目录下复制main.c;stm32f10x_conf.h;stm32f10x_it.c;stm32f10x_it.h这四个文件到test1\User下
做好后test1如下图所示:
打开Keil uVision4 软件,新建项目,如下图所示。
相应的在test1文件夹中多了一个新东西。
接下来添加组与文件。
可能有人会问不是已经在test1中新建了文件夹以及文件吗,为什么还要在这里重复添加一遍。这是因为在test1中新建只是在电脑硬盘里面新建的,并没有告诉uVersion4这个编译器,在编译器中设置的组是虚拟的,它要链接到具体的电脑硬盘的文件当中,所以要在组内添加进实实在在的文件。这样才可以把各种文件组织起来形成工程环境。
将原有默认的Souce Group 1组删除,删除按钮在新建组按钮右边。
新建User组,在该组添加test1\User 下的两个文件:main.c;stm32f10x_it.c
新建Cmsis组(存放SM32内核文件),在该组添加:
test1\Libraries\CMSIS\CM3\CoreSupport下的core_cm3.c
test1\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的system_stm32f10x.c
新建Startup组,在该组添加test1\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的startup_stm32f10x_hd.s 注意默认的文件类型是.c文件,要改成All files(.)才会显示。
新建Stdperiph_Drive组,在该组添加test1\Libraries\STM32F10x_StdPeriph_Driver\src下的stm32f10x_gpio.c和stm32f10x_rcc.c。为了减小生成文件的大小,这里根据需要添加文件。最基本的是GPIO和RCC,它们分别是输入输出和时钟。
新建App组不添加文件。点击OK后可以在左侧的Project栏看到新建的组和组内的文件。
在这里我们需要改动的地方有以下几个。
第三个Output里面:
第四个Listing里面:
第六个C/C++里面:添加 编译指令 USE_STDPERIPH_DRIVER,STM32F10X_HD
后面需要注意第九个Debug ,选择左边Use Simulator表示软件仿真,选择右边表示JLINK或JTAG硬件仿真,我们选择软件仿真。
点击OK,工程配置结束。
从左侧Project栏打开main.c,可以看到里面系统默认存在很多代码。
将其全部删除后,添加如下代码。
创建公共头文件。
stm32f10x.h是STM32自带的库函数。如果在后续开发中还有其他自己写的函数都要把头文件添加到公共头文件public.h中,这样main.c只需包含了公共头文件就可以调用所有的函数了,结构更加清晰并且代码不会被重复编译。
如果出现warning,很可能是光标位置不当。每个文件的光标要放在代码最后一行的下一行,也就是最后要多空出来一行。这样编译就不会有问题啦。
注意,改动后要将对应的文件保存后再点击编译。否则,硬盘中的文件其代码并没有变化,点击编译也只是重复编译了一遍未改动的代码。
至此简单的工程模板就创建成功了。可以将这个模板保存好,以后在做项目的时候复制过来一份模板,在模板上添加代码,这样会比较方便。
这里有我的创建好的工程模板和stm32的一些说明文件。
https://download.csdn.net/download/huagengpai1994/10809289