一板网电子技术论坛

天南地北客
发表于: 2015-11-25 13:33:41 | 显示全部楼层

stm32f7-disco-eclipse-gcc1.jpg

最近意法半导体扩大了STM32微控制器的产品组合,发布了新的STM32F7系列。该产品是ST公司最好的MCU,基于Cortex-M7内核,最高能运行到216MHz(将来的版本可以运行到400MHz,CoreMark 2000分),内部的Flash最高到1Mb以及360Kb的RAM。STM23F7也可以从外部闪存运行,而且不影响性能,这要归功于L1缓存(这可能是这些MCU最有趣的一个方面)。STM32F7针对高端嵌入式应用,特别是多媒体应用,而且我认为对于爱好者使用来说,这会是远远低于预算的应用。在写这篇文章的时候,这些MCU是相当昂贵的,小批量的订单每片价格从12欧元到20欧元。这无疑是一个非常高的价格。特别是考虑到可以在周围找到低于10欧元的Cortex-A7的MCU。但我认为未来价格会显著下降。


ST发布了两款开发套件用于开始入门编程STM32F7微控制器。一个是STM32F756G-EVAL套件。该套件很昂贵(约600欧元),并且针对专业用户。高无疑问,这是该平台下最完整的套件,但是对于我来说太贵了。终于,ST发布了该平台的经典的开发套件STM32F746G-DISCO。它有一个非常积极的价格(约45欧元),并且有很多有趣的功能:

•    STM32F746NGH6微控制器,具有1MB的Flash闪存和340KB的RAM,BGA216封装(是的,BGA封装。不要使用你的探索板尝试奇怪的事情,因为如果出现错误,会很难更换微控制器)。

•    板载ST-LINK/V2-1

•    USB功能:虚拟COM端口,大容量存储器,调试端口

•    4.3英寸480×272彩色LCD-TFT电容式触摸屏

•    相机接口

•    SAI音频编解码器

•    音频线路输入和线路输出插孔

•    立体声扬声器输出

•    两个ST MEMS麦克风

•    SPDIF RCA输入接口

•    两个按钮(用户和复位)

•    128Mb四通道SPI闪存

•    128Mb的SDRAM(可访问64 Mbits)

•    microSD卡接口

•    RF-EEPROM子板接口

•    USB OTG HS带微型AB连接器

•    USB OTG FS带微型AB连接器

•    以太网接口,兼容IEEE-802.3-2002

•    五种电源供电选项:

    – ST-LINK/V2-1

    – USB FS 接口

    – USB HS 接口

    – Arduino接口的VIN

    – 外部5V

•    用于外部应用程序的电源输出:3.3V或5V

•    Arduino Uno V3接口


现在STM32F746G-DISCO是开始玩这个平台的最廉价的解决方案。Nucleo-F7预计在2015年年末发布。但是,STM32Fx探索板的爱好者会有一些失望,该探索板并没有像其他探索板一样引出所有的MCU引脚到合适的排针。在探索板的底部,只有很少的信号连接到Arduino接口。如果你需要访问其他的引脚,可能最好的方法是使用更专业的STM32F756G-EVAL套件。但是,请记住,STM32F7的设计与STM32F4系列是pin-to-pin兼容的。此外,Cortex-M7内核的另一个有趣的特点是生成的二进制文件兼容Cortex-M4。我做了一个小测试,而且可以证实,这是真的。

在这篇文章中,我将会告诉你,使用免费的Eclipse/GCC工具链开始编程该开发板所需的步骤。我们将创建一个简单的应用程序,在液晶显示屏上打印一个跳动的字符串,如下面的视频:

https://www.youtube.com/embed/KnuefWCcfBA?feature=oembed

即使应用程序是很微不足道的,但它将会为我们提供机会建立一个完整的开发环境,并且开始编程STM32F746G-DISO板。

跳转到指定楼层
天南地北客
发表于: 2015-11-25 16:28:24 | 显示全部楼层

假设和要求

在本教程中,我会假设你有:

•    完整的Eclipse/ GCC ARM工具链,并且带有这篇文章中描述的所需的插件。我会假设,整个工具链安装在C:\STM32Toolchain,或这〜/ STM32Toolchain(如果你有一个类似UNIX的系统)。

•    意法半导体最新版本的STM32Cube-F7框架,且已经下载和解压缩。

•    STM32F746G-DISCO板。我认为,对于其他板来说,实现此过程也是很简单的。


创建一个空的项目

第一步是创建一个框架项目,里面会放置ST的HAL库。于是,启动Eclipse,然后转到File->New->C Project,并选择“Hello World ARM Cortex-M C/C++ project”。你可以选择你想要的项目名称(我选择了“test1”),点击“Next”。

Schermata-2015-06-04-alle-08.11.57.png

下一步,你应该配置处理器的特性。但是,由于GNU ARM插件仍然缺乏对Cortex-M7的支持,你完全可以跳过这一步,设置如下图所示:

Schermata-2015-06-04-alle-08.14.12.png

在接下来的步骤不更改所有的参数,直到最后一步:Vendor CMSIS name。将DEVICE改成stm32f7xx。点击“Next”。在接下来的步骤你可以保留默认参数。最后一步是有关GCC工具链的。可以使用这些值:

工具链名称:GNU Tools for ARM Embedded Processors (arm-none-eabi-gcc)

工具链路径:C:\STM32Toolchain\gnu-arm\4.8-2014q3\bin

点击“Finish”。


回复

使用道具 举报

天南地北客
发表于: 2015-11-26 09:57:06 | 显示全部楼层

在Eclipse项目导入STM32Cube-HAL

好。现在我们可以开始在工程里面导入HAL文件了。通过Eclipse的GNU ARM插件生成的工程仅是一个包含ARM公司的Cortex微控制器软件接口标准(CMSIS)的骨架。CMSIS是一个独立于供应商的硬件抽象层,用于Cortex-M处理器系列。它使到处理器的接口外设、实时操作系统和中间件的软件接口很稳定和简单。这是为了简化软件的复用以及减少学习量。但是,CMSIS包不足以开始编程STM32芯片。也需供应商特定的硬件抽象层(HAL)。其由意法半导体和STM32Cube框架一起提供。

CMSIS-HAL1.png

上图试着更好得解释所有涉及最终生成的固件的组件。CMSIS是由ARM开发的通用的一套功能集,并且适用于所有的Cortex-M供应商(ST、ATMEL等)。ST HAL是由ST开发的用于特定器件的硬件抽象层,并且与STM32系列相关(F0、F1等)。Device HAL是一种连接器,允许连个子系统之间相互通话。这是一个非常简化的观点,但是足以使用该架构开始编程。


让我们来看看生成的项目。

Schermata-2015-07-12-alle-06.50.41.png

•    /src和/include文件夹包含我们的"main"应用程序。该插件生成了一个基本框架的main.c文件。我们不使用这些文件,很块就会看到,我们将在该文件夹放置自己的“main”。

•    /system文件夹主要包含ARM CMSIS包。

•    /system/include/stm32f7xx和/system/src/stm32f7xx,我们将在该文件夹放置STM32Cube HAL。

•    /ldscripts包含GNU Link Editer(ld)的脚本文件。这些脚本指示链接器来分区内存以及做一些配置终端和入口点路径的事情。


现在让我们来看看cortexm子文件夹。

Schermata-2015-07-12-alle-06.53.38.png

在上图中我用蓝色突出显示的文件是由GNU ARM Eclipse插件自动生成的。它们就是在前一个图中称作Device HAL的一部分。这些文件基本上是空的,并且应该由定制代码代替,这两个文件专用于单个供应商(我们的例子是ST),同时专用于给定的MCU。我们将其删除。

因此,第一步是从ST网站上下载STM32Cube-F7的最新版本(或对应于你的MCU),解压缩,并把它放到文件夹C:\ STM32Toolchain。解压缩完成后,将文件夹STM32Cube_FW_F7_V1.1.0重命名为STM32Cube_FW_F7。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 11 | 回复: 49



手机版|

GMT+8, 2022-10-7 07:59 , Processed in 0.040563 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.4

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表