添加STM32F4标准外设库

Keil开发环境配置

方式一:离线安装(推荐)

通常,我们可以在Arm为Keil准备的官方网站搜索所需的所有ARM相关开发包。

  1. 搜索:STM32F407Arm Keil | Devices。点开STM32F407ZGTx

  1. 选择:CMSISPack 下的 STM32F4xx_DFP会发现STM32F4xx用的都是同一个开发包

  1. 继续点击下载即可:Download Recommended Pack

如果下载慢(文件大小280M左右),建议在链接上按鼠标右键,复制链接地址https://www.keil.com/pack/Keil.STM32F4xx_DFP.2.17.1.pack到迅雷下载,会比较快。

  1. 双击下载到的文件,按照默认路径进行安装

  1. 不能也不用输入目标文件夹,直接点Next >>

  1. 安装完成,Finish关闭即可

方式二:在线安装

文档获取

参考手册

https://www.st.com/content/st_com/zh/search.html#q=stm32f407-t=resources-page=1

数据手册

https://www.st.com/zh/microcontrollers-microprocessors/stm32f407zg.html#tools-software

标准外设库获取

标准外设库获取我们可以从官网进行下载。

下载链接:https://www.st.com/zh/embedded-software/stsw-stm32065.html#get-software

下载完成后,进行解压,解压后目录如图

标准外设库目录介绍

打开下载的 STM32F4xx 标准固件库,里面的目录如图

  • Project:此文件夹包含的是官方编写的示例代码,涉及芯片的大部分功能。还包含了模板代码。
  • Libraries:此文件夹里面有 2个文件夹,包含 CMSIS和固件库,方便用户开发使用。
  • Utilities:此文件夹包含一些第三方组件和 STM32 配套的开发板文件。
Libraries

  • CMSIS:微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是Cortex-M 处理器系列的与供应商无关的硬件抽象层。规定了处理器内核与外设的接口,统一了内核访问外设寄存器的方法

POSIX(Portable Operating System Interface of UNIX),可移植操作系统接口,它定义了操作系统应该为应用程序提供的接口

  • STM32F4xx_StdPeriph_Driver: 从名称也可以看出,这个是 STM32F4 系列的标准外设库,存放一些封装了寄存器的库函数,我们后面编程也是依赖于这个库进行开发。
Libraries/CMSIS

内部主要是汇编代码,这个是直接和芯片进行交互的,每种不同的芯片需要配套不同的cmsis接口实现。

Libraries/STM32F4xx_StdPeriph_Driver

这个里面都是一些外设库文件,包含 STM32F4 芯片的绝大部分功能,包含 ADC,CAN,SDIO,SPI 等。

这个库是嫁接在cmsis的基础上的,F4系列不同的芯片可用公用这一套实现。

项目模板搭建

前期准备
  • 已经安装好 Keil 软件
  • 已经安装好 STM32F4xx 的 Pack 包
  • 已经下载好 STM32F4xx 标准固件库
工程文件目录创建
  • Project:放工程文件,编译文件等。
  • Firmware:放 ARM 内核文件,标准外设库文件等。
  • Hardware:放开发板的硬件驱动文件。
  • User:放 main 函数,stm32f4xx_it 文件,systick 文件。
  • Doc: 放 readme.txt 文件,工程说明文件。

固件库移植

找到我们的固件库的下载目录,将STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries 文件夹下的内容全部拷贝到新建目录的Firmware 下

程序入口移植

找到我们的固件库的下载目录,将STM32F4xx_DSP_StdPeriph_Lib_V1.9.0/Project/STM32F4xx_StdPeriph_Templates中的如下文件进行拷贝:

将文件拷贝到工程目录的User目录中

Keil工程创建

打开 keil,点击最上面的 Project 选项卡,选择 New uVision Project 选项新建一个工程

选择保存路径为我们刚才创建的文件夹下的 Project,文件名为 STM32Template,然后点击保存

设备选择

点击保存之后,弹出工程配置窗口,选择所需芯片,这里依次选择GigaDevice->GD32F4xx Series->GD32F470->GD32F470ZG,然后点击 ok

确定所需芯片之后,弹出 RTE 的环境配置对话框,选择工程所需的组件,不用配置,点击取消

keil分组创建

我们的工程已经创建完成,但是可以看到工程里面还没有文件,我们可以创建一些分组和添加一些文件。

我们打开管理工程项去创建分组和添加文件

首先我们新建分组:

  • User
  • CMSIS
  • Firmware
  • Hardware
  • Doc

CMSIS分组添加

来到Firmware\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目录下,选择如下:

Firmware分组添加

来到Firmware\STM32F4xx_StdPeriph_Driver\src目录下,选择如下:

  • stm32f4xx_rcc.c
  • stm32f4xx_gpio.c
  • misc.c
程序代码修改

打开 main.c 文件,删除一些不必要的代码,剩余部分如图:

打开 gd32f4xx_it.c 文件,拉到最后面,然后删掉 Systick_Handler 下面的代码,剩余部分如图:

  1. Target配置

点击魔法棒,进入配置中的Target,选择ARM compiler 为V6

勾选Use MicroLIB

  1. Output配置

选择创建hex文件

  1. C/C++配置

    • Define配置为:USE_STDPERIPH_DRIVER,STM32F40_41xxx
    • Warings选择AC5-like warnings
    • 选择c99c++03
    • Optimization选择-O1
  1. Include配置

添加如下几个目录:

  • User
  • Firmware\CMSIS\Device\ST\STM32F4xx\Include
  • Firmware\CMSIS\Include
  • Firmware\STM32F4xx_StdPeriph_Driver\inc
编译错误

通常在编译过程中会报错,是由于当前CMSIS接口定义不符合AC6的编译环境,我们需要覆盖掉CMISIS的编译头文件。

首先,删除Firmware\CMSIS\Include中所有的头文件。

然后,找到你的Pack安装目录,查找方式如下:

来到这个目录中的Packs\ARM\CMSIS\5.9.0\CMSIS\Core\Include中:

拷贝这个目录中所有的.h文件,拷贝到你的项目目录的Firmware/CMSIS/Include目录中

  • 29
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值