STM32F407学习_搭建固件库工程模板
1.标准外设库概述
STM32标准外设库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节(寄存器),开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少开发者开发使用片内外设的时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。同时,STM32官方还给出了大量的示例代码以供学习。
2.标准外设库下载
小编使用的是:STM32F4_DSPv1.8版本的外设库。软件版本号:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
STM32标准外设库可以到ST公司的官方网站下载(需要使用邮箱注册),也可以自行到小编分享的百度网盘上下载。 软件分享(百度网盘):链接:https://pan.baidu.com/s/13LruO8e5NxEp9DPQeMkE8A 提取码:nkpt
3.固件库包分析
1._htmresc:文件夹中存放的是官方Logo图片,可以忽略。
2.Libraries:文件夹中有 CMSIS 和 STM32F4xx_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件,是代码移植的重头戏。
a.CMSIS 文件夹存放的是符合 CMSIS 规范的一些文件,
b.Driver 文件夹下是STM32F4 标准外设固件库源码文件和对应的头文件,说白了就是将寄存器封装好的函数接口。
3.Project :文件夹中有STM32F4xx_StdPeriph_Examples 和STM32F4xx_StdPeriph_Template 两个文件夹
Examples:文件夹中存放的是固件示例源码,Template:文件夹中存放的是工程模板。这些源码的学习对以后的开发学习非常重要。
4.Utilities : 文件夹下就是官方评估板的一些对应源码,可以忽略不看。
5.固件库帮助文档:根目录中还有一个固件库的帮助文档 stm32f4xx_dsp_stdperiph_lib_um.chm 文件,在开发时可以阅读这个帮助手册,了解函数的使用。
6.MCD-ST Liberty SW License Agreement V2 (License说明)和 Release_Notes(固件库发行说明):这两个文件可以不用阅读。
4.工程模板搭建
接下来创建属于我们自己的工程模板,为以后的STM32学习提供便利。
步骤一:创建一个文件夹My_Templates 用于保存固件库工程,在My_Templates文件夹下新建以下文件夹
1. CMSIS : 保存启动文件以及内核相关的文件 。
2. Libraries: 保存外设相关所有源文件以及头文件。
3. Output : 保存编译生成的一些杂文件。
4. Project : 保存工程。
5. User : 这个文件夹用于存放 main.c main.h 以及用户代码。
6. Doc : 在这个文件夹下新建一个 Readme.txt (软件说明)。
步骤二:往空文件夹中添加文件
这里添加的文件都是源于我们之前下载的标准库包里的。
1.CMSIS 文件夹中添加 :
文件路径1:
en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Include
需要添加的文件 :core_cm4.h core_cmFunc.h core_cmInstr.h core_cmSimd.h
文件路径2:en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include
需要添加的文件 :stm32f4xx.h system_stm32f4xx.h
文件路径3:
en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm
需要添加的文件 :startup_stm32f40_41xxx.s
2.Libraries文件夹中添加:
文件路径:en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver
需要添加的文件: inc src
步骤三:MDK5软件上相关设置
打开MDK5软件 ------》选择 “project” :新建一个项目(给项目命名)------》选择好芯片型号
选择芯片类型
不需要添加启动文件(我们自己做工程模板时就已经添加了),直接把弹出来的对话框关掉。
添加文件到工程里
点击 “品” 弹出下方的界面,添加文件。
目前还没把我们相关的 .c 和.h文件添加进来的情况如下:
添加工程所需的文件(也就是我们之前找的标准库包中的文件)
添加相应的头文件路径
设置工程:选择 “ 魔术棒”
1. 生成 .hex文件设置
2.编译过程中output文件路径指定
选择 "Select Folder for listings..." 选项指定输出文件的路径为 你之前创建的 Output 文件夹中。
3.C++ Define 中加入以下宏定义 STM32F40_41xxx, USE_STDPERIPH_DRIVER 以及添加相对应的头文件
STM32F40_41xxx, USE_STDPERIPH_DRIVER 这个宏的来源:
文件路径:en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates\MDK-ARM中的 readme.txt文件
步骤四:编译报错处理
1.注释掉报错的函数即可
2.由于我们的硬件不支持FSMC功能,所以添加头文件是要去除这个头文件 stm32f4xx_fmc.h
3.去掉 “金钥匙”方法
解决方法:出现上面的“金钥匙”的情况,只能读文件,而不能对文件进行修改。只需要修改文件的可读可写权限即可。
有误欢迎请指出,共同学习,共同进步。
STM32F407学习_搭建固件库工程模板相关推荐
- 野火学习笔记(4) —— 固件库
文章目录 - 自己写库-构建库函数雏形 1. 什么是 STM32 函数库 2. 为什么采用库来开发及学习? 3. 实验:构建库函数雏形 3.1 外设寄存器结构体定义 3.2 外设存储器映射 3.3 外 ...
- 嵌入式 新建基于固件库的MDK5工程模板
1. 在目录下建立一个名为Template的文件夹 2. 打开软件,new一个新的project 3. 在刚才建立的Template文件夹下建立一个USER文件夹(放代码工程文件),然后保存 4. 然 ...
- 正点原子stm32F407学习笔记1——新建工程模板
一.基于固件库 1.新建文件夹 新建一个Template文件夹,在此文件夹下新建五个子文件夹 2.打开keil软件,点击菜单栏Project –>New Uvision Project,如果有其 ...
- STM32固件库移植(开发环境的搭建)
STM32固件库移植(开发环境的搭建) 以下过程是手动移植,过程繁琐,不感兴趣的可以绕路学习CubeMX. 下文阐述两种基本开发环境的搭建方法,HAL库的添加将放在下期 1.基本开发环境的搭建 先创一 ...
- STM32F103C8T6工程模板 ——固件库版、正点原子代码风格、包含SYSTEM文件夹
提示:文章包括省事部分和学会部分 文章目录 前言 一.想自己写在哪里学? 二.省事直接下载作者写好的 1.部分代码 2.工程模板包 总结 前言 笔者学习了STM32F103ZET6和STM32F104 ...
- 移植好U8g2图形库的STM32F407标准库工程模板,0.96寸OLED驱动程序
移植好U8g2图形库的STM32F407标准库工程模板,用的0.96寸OLED屏(SSD1306),用硬件IIC驱动. 花了一晚上时间去移植.开发板主控MCU用的是STM32F407VET6,I2C接 ...
- stm32f407固件库移植ucosii_v2.92.07
试验原因 在f103固件库上已经移植了ucosii + lwip, 试验过了. 产品板子是f407, 准备重新移植一遍ucosii + lwip. 先从固件库模板上移植ucosii. 上次做过移植试验 ...
- java cms 知乎_可能是史上最全面的学习资源 — VUE 开源库篇(二)
原标题:可能是史上最全面的学习资源 - VUE 开源库篇(二) 原文:https://www.cnblogs.com/opendigg/p/6513510.html 作者:OpenDigg 最近做了一 ...
- STM32固件库(标准外设库)入门学习 第四章OLED屏幕使用
STM32固件库(标准外设库)入门学习 第四章OLED屏幕使用 本学习教程,参考B站江科大自化协STM32视频,型号为STM32F103C8T6. 文章目录 STM32固件库(标准外设库)入门学习 第 ...
最新文章
- 常用的JQuery数字类型验证正则表达式
- 震惊!EfficientDet终于开源了!
- 速度比晶体管快1000倍,新型单光子开关登上Nature
- 8.QT的事件循环与事件发送相关类
- PullToRefreshScrollView下拉刷新开源组件分析
- 动态sql拼接单引号与 变量赋值
- 四、启动OpenLDAP服务器
- hadoop安装与配置
- Python操作Jira提交BUG
- 为什么这么多应届生要进入互联网行业?
- vue2项目使用axios发送请求
- 无线网卡性能怎么测试软件,无线性能测试平台和方法
- BLEU——机器翻译评测
- MATLAB图像处理植物叶片面积计算
- rpg maker mv使用ajax,Rpgmakermv(15) PH任务插件
- 关于最新版go-cqhttp无法登录qq
- iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配尺寸@media
- linux ld so 源码分析,ld.so分析2
- 关于主机的思维导图_关于开展思维导图培训的通知
- Lab5: xv6 lazy page allocation
热门文章
- Python3使用PIL在图片中写文字支持中文
- c 连接mysql.mwb_MySQL 示例数据库sakila-db的安装
- svn切换账号-转载
- 人人商城(分销版)1.11.7微擎原版,提示“抱歉,您无权进行该操作,请先登录!”只因为一个字母,我苦找了9个多小时。
- 夏日葵电商:微信分销系统开发运营误区及技巧
- python编程 注释
- 辍学北漂,从月薪2k服务员到2W报表工程师,我的数据追梦故事
- 第三篇 Java 高级篇
- miniui自定义messageBox框
- MAC安装WIN10的种种问题及解决方法