通过ST官方SPL建立STM32FXXX工程
来源:互联网 发布:零复网络是诈骗吗 编辑:程序博客网 时间:2024/06/03 16:13
据我了解目前很多学生(包括曾经的我)在第一次接触STM32时都是使用的开发板以及相应的模板工程,比如野火、尚学等等。无一例外地这些模板工程已经给我们配置好了基于官方Standard Peripheral library (标准外设库)的板级支持包(BSP),并且提供给我们了相关外设的简单例程,基于这种形式的学习有一下几点好处:
1、让我们从系统的、宏观的角度去理解STM32工程;
2、避免了繁杂的配置过程、降低了学习难度;
3、上手速度快、效率很高(在好的教程下几天就可以掌握基本外设的使用);
但是在此之前让同学们了解一下STM32工程是如何建立的是非常有必要的,因为在学习的过程中如果对工程缺少了解会在很多不起眼的地方犯一些低级错误,造成不必要的时间浪费,此外在遇到问题时不及时解决,心存疑问会降低学习效率,消耗学习激情(特别是对那些有强迫症的童鞋)。
言归正传!!! 如何通过ST官方SPL建立STM32FXXX工程呢?(STM32FXXX意味着对大多数STM32芯片都适用).
特别提醒:本文介绍不只是一个具体的方法,而是针对大多数芯片建立工程的一种思路,只要有相应芯片的官方的SPL,那么工程建立的流程就差不多,配置BSP也是大同小异。
一、 下载ST官方SPL库 (本文以STM32F103为例)
链接:http://www.stmicroelectronics.com.cn/zh/microcontrollers/stm32f1-series.html?querycriteria=productId=SS1031
固件库下载:
点击下载 提取码:60m7
二、 利用IDE(集成开发环境)建立工程
1. 建立工程文件夹,如下图所示:
2. 将SPL中的库文件、启动文件、标准接口文件等拷贝到工程文件夹中:
A、 其中CMSIS中包含:
它们来自SPL文件的(注意文件路径):
以及
其中startup中包含:
关于SPL中startup文件里有多个启动文件的选择参考如下:
B、 其中FwLib中包含:
它们来自:
src和inc里面包含了固件库的源文件和头文件。
C、 其中User中包含:
它们来自:
3. 建立工程:
特别提醒:本文使用Keil4.7来建立的工程文件,其他版本类同
Keil5 点击下载 提取码:v7dk
A、选择芯片:
确认后会弹出如下图所示提醒框,问是否添加对应芯片的启动文件(该软件集成很多芯片的启动文件),由于之前我们自己已经添加了启动文件,因此在此选择不添加。
B、向工程添加“组“和“文件”
在下窗口中可以修改项目名称、添加组、添加文件(其中“组”就是之前建立的工程文件夹中的子文件、“文件”就是相应子文件夹中的文件),效果如下图所示:
注意:这里向工程添加的文件和 之前向工程文件夹添加的内容相同,不要忘记添加所有.h文件和必要的启动文件,这里启动文件添加后缀为_hd.s的启动文件(启动文件的选择可参考上面对选择启动文件的描述)。
C、工程配置
目标设置:
输出项设置:
列表项设置:
C/C++项设置:
注意:预设宏定义之间用逗号隔开!!!
debug项设置:
下载参数设置项:
工具项设置:
注意这里面的下载器选择需要和Debug项中的相同,这里都选择的是J-LINK。
除了J-LINK之外,STM32常用的下载器还有ST-LINK(其好处在于数据传输只用到两根线)。针对本次开发板,还可以用的是串口ISP下载,关于ISP下载做如下讲解:
用ISP下载时其工程配置可以同上,关键的是在OutPut选项里面要勾选Creat HEX File,该文件输出在OutPut所保存的文件夹,这里是在User中Objects文件夹里面,该文件的后缀是 .hex 。此外,还需要一个stm32串口下载软件进行串口下载程序
软件下载:
点击下载 提取码:4fqi
4. 编译下载:
如果按照上述操作后进行编译,会出现如下问题:
这个问题的出现是因为在SPL中的main函数里面(我们直接复制过来的)引用了#include “stm32_eval.h”及其相关内容,这是官方用于评估板的库函数(里面对评估板硬件接口进行了重定义),由于我们没有用官方的评估板,最直接的解决办法就是将main函数中多余的函数删除,最后main函数如下图所示:
然后在进行编译就会顺利通过!!!
至此已经完成了基于官方SPL库的STM32FXXX工程建立。
最后总结一下:基于官方SPL的建立工程的思路:
1. 首先明确SPL中存在哪些文件,它们都有什么用;
2. 基于SPL和自己的需求建立工程文件夹并向其中添加SPL中必要的文件,如启动文件、固件库、系统文件;
3. 建立工程并向其中添加“组”和“文件”;
4. 配置工程;
5. 编译下载;
- 通过ST官方SPL建立STM32FXXX工程
- 基于STM8s官方标准库建立IAR工程
- VS2008通过ddkwizard向导快捷建立驱动开发工程!
- VS2012建立了MFC工程,通过gsoap连接了webservice
- Python通过django框架一键建立工程 .bat文件
- SPL
- SPL
- ST工程类笔试题
- Android工程与web工程通过tomcat服务器建立网络连接案列
- (安卓)如何根据百度导航官方Demo建立自己的导航工程
- ST官方下载固件库 2016-06-30
- 如何利用st官方库编程开发
- KEILV5之工程建立工程
- AndroidStudio建立完整JNI开发工程流程及Java通过JNI调用C函数
- 建立一个C6000simulator工程
- VS2005 工程建立方法
- 建立工程目录
- seam-gen建立工程
- 【LeetCode】637. Average of Levels in Binary Tree
- 递归算法,运算1-2+3-4+5-6+...+n
- 文件查找命令
- PAT编程题:部分A+B (15)
- Java直接插入排序算法
- 通过ST官方SPL建立STM32FXXX工程
- 树的重心--cf686d Kay and snowflake
- ContentValues和HashTable和HashMap和properties
- opencv 调用 getPerspectiveTransform 函数报错
- TypeError: pivot_table() got an unexpected keyword argument 'rows'
- HDD is Outdated Technology
- unity调用外部的exe
- Confusing Date Format
- idea将maven项目打包成war包的方式,以及使用war包