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_ExamplesSTM32F4xx_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学习_搭建固件库工程模板相关推荐

  1. 野火学习笔记(4) —— 固件库

    文章目录 - 自己写库-构建库函数雏形 1. 什么是 STM32 函数库 2. 为什么采用库来开发及学习? 3. 实验:构建库函数雏形 3.1 外设寄存器结构体定义 3.2 外设存储器映射 3.3 外 ...

  2. 嵌入式 新建基于固件库的MDK5工程模板

    1. 在目录下建立一个名为Template的文件夹 2. 打开软件,new一个新的project 3. 在刚才建立的Template文件夹下建立一个USER文件夹(放代码工程文件),然后保存 4. 然 ...

  3. 正点原子stm32F407学习笔记1——新建工程模板

    一.基于固件库 1.新建文件夹 新建一个Template文件夹,在此文件夹下新建五个子文件夹 2.打开keil软件,点击菜单栏Project –>New Uvision Project,如果有其 ...

  4. STM32固件库移植(开发环境的搭建)

    STM32固件库移植(开发环境的搭建) 以下过程是手动移植,过程繁琐,不感兴趣的可以绕路学习CubeMX. 下文阐述两种基本开发环境的搭建方法,HAL库的添加将放在下期 1.基本开发环境的搭建 先创一 ...

  5. STM32F103C8T6工程模板 ——固件库版、正点原子代码风格、包含SYSTEM文件夹

    提示:文章包括省事部分和学会部分 文章目录 前言 一.想自己写在哪里学? 二.省事直接下载作者写好的 1.部分代码 2.工程模板包 总结 前言 笔者学习了STM32F103ZET6和STM32F104 ...

  6. 移植好U8g2图形库的STM32F407标准库工程模板,0.96寸OLED驱动程序

    移植好U8g2图形库的STM32F407标准库工程模板,用的0.96寸OLED屏(SSD1306),用硬件IIC驱动. 花了一晚上时间去移植.开发板主控MCU用的是STM32F407VET6,I2C接 ...

  7. stm32f407固件库移植ucosii_v2.92.07

    试验原因 在f103固件库上已经移植了ucosii + lwip, 试验过了. 产品板子是f407, 准备重新移植一遍ucosii + lwip. 先从固件库模板上移植ucosii. 上次做过移植试验 ...

  8. java cms 知乎_可能是史上最全面的学习资源 — VUE 开源库篇(二)

    原标题:可能是史上最全面的学习资源 - VUE 开源库篇(二) 原文:https://www.cnblogs.com/opendigg/p/6513510.html 作者:OpenDigg 最近做了一 ...

  9. STM32固件库(标准外设库)入门学习 第四章OLED屏幕使用

    STM32固件库(标准外设库)入门学习 第四章OLED屏幕使用 本学习教程,参考B站江科大自化协STM32视频,型号为STM32F103C8T6. 文章目录 STM32固件库(标准外设库)入门学习 第 ...

最新文章

  1. 常用的JQuery数字类型验证正则表达式
  2. 震惊!EfficientDet终于开源了!
  3. 速度比晶体管快1000倍,新型单光子开关登上Nature
  4. 8.QT的事件循环与事件发送相关类
  5. PullToRefreshScrollView下拉刷新开源组件分析
  6. 动态sql拼接单引号与 变量赋值
  7. 四、启动OpenLDAP服务器
  8. hadoop安装与配置
  9. Python操作Jira提交BUG
  10. 为什么这么多应届生要进入互联网行业?
  11. vue2项目使用axios发送请求
  12. 无线网卡性能怎么测试软件,无线性能测试平台和方法
  13. BLEU——机器翻译评测
  14. MATLAB图像处理植物叶片面积计算
  15. rpg maker mv使用ajax,Rpgmakermv(15) PH任务插件
  16. 关于最新版go-cqhttp无法登录qq
  17. iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配尺寸@media
  18. linux ld so 源码分析,ld.so分析2
  19. 关于主机的思维导图_关于开展思维导图培训的通知
  20. Lab5: xv6 lazy page allocation

热门文章

  1. Python3使用PIL在图片中写文字支持中文
  2. c 连接mysql.mwb_MySQL 示例数据库sakila-db的安装
  3. svn切换账号-转载
  4. 人人商城(分销版)1.11.7微擎原版,提示“抱歉,您无权进行该操作,请先登录!”只因为一个字母,我苦找了9个多小时。
  5. 夏日葵电商:微信分销系统开发运营误区及技巧
  6. python编程 注释
  7. 辍学北漂,从月薪2k服务员到2W报表工程师,我的数据追梦故事
  8. 第三篇 Java 高级篇
  9. miniui自定义messageBox框
  10. MAC安装WIN10的种种问题及解决方法