添加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目录中

  • 28
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Version: 2.15.0 (2020-09-28) Keil.STM32F4xx_DFP.2.15.0.pack Download Updated Pack to STM32Cube_FW_F4 Firmware Package version V1.25.1 using HAL Drivers V1.7.9. STM32CubeMX integration (Version 6.0.1): Added support for Timebase Source TIMx (FrameworkCubeMX_gpdsc.ftl). Removed non-existent include path. CMSIS Flash Algorithm: Corrected STM32F42xxx_43xxx_OPT Algorithm. CMSIS SVD: Updated STM32F42*.svd, STM32F43*.svd files. CMSIS-Driver: I2C: Corrected 2 byte reception in master mode. MCI: Replaced empty delay loops with _NOP(). SPI: Corrected PowerControl function (to return error if Initialize was not called, to abort active transfer if power off was requested). Updated GetDataCount function to give accurate count in DMA mode. Corrected Control function (abort in DMA mode, software controlled slave select in slave mode, TI Frame Format selection, ignore bus speed for slave mode). Corrected Uninitialize function (to power off the peripheral if it is powered). Corrected SPI3_SCK pin configuration. Corrected DMA MemDataAlignment configuration. USART: Corrected DMA MemDataAlignment configuration. USBD_HS/USBH_HS: OTG_HS ULPI clock disabled in low power if internal PHY is used to enable proper operation of OTG_HS port in FS mode during CPU sleep. CAN/EMAC/USBD/USBH: Removed macros already provided by cmsis_compiler.h. Updated Boards Examples: Migrated CubeMX projects to V6.0.1 and updated config files. Changed variant selection to "MDK-Plus" where possible. Updated all USB Host/Device examples with user templates from MDK-Middleware v7.11.1. Terminating app_main thread with osThreadExit() to avoid endless loop Updated MS Windows UBS driver files.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值