STM32F407ZG开发板学习(1)
新建Keil5项目
官方标准外设库准备
- 官网:https://www.st.com/zh/embedded-software/stm32-standard-peripheral-libraries.html#products
- 选择适合的外设库,鼠标放置一段时间会有型号提示。
- 点击Open software page,选择需要的版本下载。PS:官网下载需要注册登录账号,不过是免费的,需要一个能用的邮箱就行。
文件夹分组
新建项目文件夹ProjectTemplate,其中再新建下面四个文件夹。
Core
由于STM32F4使用ARM® Cortex®-M4内核,将官方标准外设库(STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Include)中的下几个选中文件拷贝到Core文件夹。
.s系统启动文件,在\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm选择适当的版本。
至此Core文件夹准备完成。
Libraries
官方库相关。将标准外设库下\Libraries\STM32F4xx_StdPeriph_Driver中\inc和\src两个文件夹拷贝到Libraries文件夹,其中inc中包含的是头文件,src中是.c源文件。
System
这个文件夹参考正点原子教程以及项目目录所建立,放置一些自己编写的时钟配置和延时等相关操作的模块,可以暂时不用添加文件。
User
项目文件存放地址,在新建Keil5项目之前,先将\Libraries\CMSIS\Device\ST\STM32F4xx\Include中的两个系统头文件拷贝至此。
再将\Project\STM32F4xx_StdPeriph_Templates下几个配置文件复制到User内。
至此准备工作已完成。
新建Keil5项目
new project
- 打开Keil5点击new project,选择User文件夹下,选择适当型号的芯片,点击ok,之后是一个官方提供的快速配置项目的界面,可以直接点击cancel。
添加文件
- 右键Target 1点击manage project items,将复制过来的一些文件加入项目
Libraries中添加src下所有.c文件,之后把图中选中文件删除,不删除会与其他文件的某些定义重复而报错。
配置设置
- 点击魔术棒。
output勾选Create HEX File。
c/c++中宏定义两个参数。
其中STM32F40_41xxx为了兼容之前的版本,USE_STDPERIPH_DRIVER是为了启动标准库的使用。
添加include的路径。
其中最后两个是在Keil安装路径下寻找。
串口配置
这个主要看自己用的是什么,在Debug页面配置。
可以在这里勾上Reset and Run这样每次烧录会自动重置,不需要自己重新断电开关。
编写程序
在User中添加一个main.c 文件。在User右键Add new item即可。添加一些测试代码,在左上角点击编译。
编译中出现的一些问题
main.h找不到
这个版本的标准库在stm32f4xx_it.c中include了一个官方没有提供的头文件main.h(其实提供了,在模板项目中可以找到),然后在SysTick_Handler函数中调用了一个本该在main.h中定义的函数TimingDelay_Decrement();这个函数的功能是延时。
延时函数建议自己编写自己需要的,具体可以参考正点原子、江科大自化协(强烈推荐,不过该教程使用的stm32f1系列,但电子知识、编码过程、怎么看库函数等学习方法很有用)。因此这两行可以暂时先注释掉再编译就好了。
重复define的警告
这个是由于stm32f4xx.h中出现了重复定义,看注释是为了解释一些遗留的别名,而且该官方文件是只读的更改不了,那也只能先放着不管。如果不想出现这类警告可以在设置忽略这种警告类型,或者先编译一次,之后不再rebuild或更改该文件那也不会再报错。
官方文档中对这一块的解释如下。