1_新建工程模板
学习过传统51单片机,大家就会知道,单片机只不过就是配置寄存器和注意时序就好,总结的来说,在正确的时候做正确的事情。但是对于STM32来说,我们不再是来配置寄存器,因为有数以千计的寄存器,我们也没精力来配置。这时,我们选择调用库函数,库函数把这些寄存器配置好,官方已经就做好了这一点。
我所用的STM32开发板是STM32F103VBT6,简单介绍一下,STM32是基于ARM@32位控制器,F表示通用类型,103表示增强型,V表示100引脚,B表示flash大小为128KB,T表示LQFP封装,6表示工业级温度范围。
在新建工程模板前,我们先获取STM32库的源码,这个百度搜索或者进ST公司的官网下载都可以找到的。这里我提供一个百度云链接:链接:http://pan.baidu.com/s/1kULkS5p 密码:ct1k
我们先来看一看STM32库的组成:
_htmresc:里面是一些图标文件,没有什么作用;
Libraries:里面是一些ARM的启动文件以及和ARM内核相关的接口文件,另外一部分是各种标准的外设驱动。
Project:里面是一些实现好的程序源码。
Utilities:目前不知,暂时也没有用到,大家可以交流,也可以告诉我一声。
.chm文件:这个太有用了,就相当于这些文件的一个目录,类似于索引表,查询表。
接下来介绍新建工程的基本步骤:
1、在桌面创建一个文件,文件名任意,比如我命名:Demo_STM32
2、在Demo_STM32下创建子目录:CMSIS、FWLib、Output、Listing、User、Project。
CMSIS:用来存放汇编的启动文件,以及和ARM内核相关的软件接口文件;(Cortex Microcontroller Software Interface Stanard,是ARM Cortex微控制器软件接口标准);
FWlib:用来存放标准外设文件,包括inc和src文件,inc是外设头文件,src是外设C代码源文件;
User:用来存放工程文件和用户代码,包括主函数main.c;
Output:用来保存软件编译后输出的文件;
Listing:存放编译过程中生成的文件。
在这里我上传一份我已经配置好了的工程模板,可以参照这个模板去3.5库中对应的目录下找到文件。链接:http://pan.baidu.com/s/1jHBd3ro 密码:7124
3、修改所有文件的属性,因为从库里面复制出来的文件都是只读模式,右击属性,把只读的勾选去掉,这样我们才能编辑这些文件。
4、打开keil,创建工程,选择自己对应的CPU类型,这里我们就不再需要添加启动文件,因为库里面已经包含了。
5、右击左边空白,创建如下文件夹,并添加对应的文件,最终就会显示如右图,记得修改main.c文件,因为官方是写了个demo程序的。
添加完文件后,左边project下目录如下:
6、配置target options,点击target options,接下来我们一个一个来配置。
a、在Target目录下修改时钟为12M,(这一步可忽略,主要是因为我的开发板是这个12M外部晶振);
b、Output目录下选择select folder for Objects...选择我们之前创建的Output文件夹路径,并勾选生成hex文件;
c、Listing目录下的操作和Output目录一样;
d、C/C++目录,宏定义添加STM32F10X_MD, USE_STDPERIPH_DRIVER,添加USE_STDPERIPH_DRIVER是为了屏蔽编译器的默认搜索路径,转而使用我们添加到工程的ST库,添加STM32F10X_MD是因为我们的芯片是中等容量的,添加这个宏后,库文件里面为中容量定义的寄存器我们就可以用了。并在include paths下添加所有.h文件的路径,这样就可以屏蔽掉默认的搜索路径。下图可以作为参考:(当编译器在我们制定的路径下还是搜索不到的话,就会回到标准目录下搜索)
e、在debug目录下,在右边勾选jlink进行仿真,然后点击设置,按照以下两张图配置:
到此为止,工程模板就建好了,这时我们点击编译,显示0 errors,0 warnings表明我们成功了;
以下对一些内容进行补充:
如果你的外部晶振为12M,你可以按此博客修改:,如果是8M的外部晶振就不用修改了。
stm32f10x_it.h stm32f10x_it.c这两个文件里面是中断函数,里面为空,并没有写任何的中断服务程序。
stm32f10x_conf.h是用户需要配置的头文件,当我们需要用到芯片的某部分外设的驱动时,我们只需要在该文件下将该驱动的头文件包含进来即可,片上外设的驱动在src文件,inc是头文件夹。
stm32f10x_it.h stm32f10x_it.c stm32f10x_conf.h 这三个文件是用户在编程的时候需要修改的文件,其他库文件一般不需要修改。
system_stm32f10x.c是ARM公司提供的CMSIS标准的库文件。