当前位置:网站首页>新建STM32F407ZG Keil5项目
新建STM32F407ZG Keil5项目
2022-08-10 05:35:00 【八个细胞】
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或更改该文件那也不会再报错。
官方文档中对这一块的解释如下。
边栏推荐
猜你喜欢
随机推荐
PyTorch的安装与基础知识
微信小程序-小程序的宿主环境
【烘焙】肉松蛋糕卷
LeetCode 292.Nim 游戏(简单)
Notes for RNN and Decision Tree
Exploratory Data Analysis EDA
LeetCode 1720.解码异或后的数组(简单)
LeetCode 1894. Find the student number that needs to be supplemented with chalk
LeetCode 剑指offer 10-I.斐波那契数列(简单)
GC0053-STM32单片机NTC热敏电阻温度采集及控制LCD1602
一个基于.Net Core 开源的物联网基础平台
我不喜欢我的代码
LeetCode 292. Nim Game (Simple)
.NET操作Excel高效低内存的开源框架 - MiniExcel
The way for programmers to make money from a sideline business and increase their monthly income by 20K
Bifrost micro synchronous database implementation services across the library data synchronization
[Difference between el and template]
卷积神经网络(CNN)实现mnist手写数字识别
GUI_AWT
优先队列