STM32
直播中

mintsy

8年用户 1483经验值
擅长:MEMS/传感技术
私信 关注
[问答]

怎样创建一个应用程序使Nucleo LD2 LED(绿色)闪烁

Eclipse是什么?

怎样创建一个应用程序使Nucleo LD2 LED(绿色)闪烁?

回帖(1)

石俊梅

2021-9-30 14:24:30
  我们将创建一个非常基本的程序:LED闪烁。 在此阶段中,我们将使用GNU ARM Eclipse插件在几个步骤中创建一个完整的应用程序,而无需处理与ST硬件抽象层(HAL)相关的方面。
  关于GNU ARM Eclipse插件的说明
  经验丰富的程序员可能会发现,为STM32平台生成代码并非必须要使用这些插件。 完全有可能在一个空的C / C ++项目中开始导入HAL,并相应地配置工具链。最好直接使用最新HAL版本中的代码以及STM32CubeMX工具自动生成的代码。 但是,GNU ARM插件带来了一些简化项目管理的功能。 此外,我认为对于新手,建议从一个自动生成的项目开始,以避免造成很多混乱。 在为STM32平台编写代码时,我们需要处理许多工具和库。 其中一些是强制性的,而另一些则可能导致混乱。 因此,最好是逐渐开始并潜入整个堆栈。 一旦您熟悉了开发环境,就可以很容易地将其适应您的需求。
  熟悉Eclipse IDE
  启动Eclipse时,您可能会对它的界面感到困惑。 下图显示了Eclipse首次启动时的外观。
  Eclipse是一种多视图IDE,其组织方式是将所有功能都显示在一个窗口中,但是用户可以自由地按需布置界面。 Eclipse启动时,将显示一个欢迎屏幕。 该“欢迎”选项卡的内容称为视图。
  要关闭Welcome视图,请单击十字图标,如下图所示。
  一旦“欢迎”视图消失,就会出现C / C ++透视图,如下图所示。
  在Eclipse中,透视图是一种以与透视图功能相关的方式排列视图的方式。 C / C ++透视图专门用于编码,它提供了与源代码的编辑及其编译有关的所有方面。 它分为四个视图。
  左侧的名为Project Explorer的视图显示了工作区中的所有项目。
  居中的视图(是较大的视图)是C / C ++编辑器。 每个源文件都显示为一个选项卡,并且可以同时打开许多选项卡。
  Eclipse窗口底部的视图专用于与编码和编译有关的若干活动,并且细分为选项卡。 例如,“控制台”选项卡显示了编译器的输出。 “问题”选项卡以一种方便的方式组织来自编译器的所有消息,以检查它们; 搜索选项卡包含搜索结果。
  右侧的视图包含其他几个选项卡。 例如,“大纲”选项卡显示每个源文件的内容(函数,变量等),从而可以快速浏览文件内容。
  还有其他可用的视图(以及自定义插件提供的许多其他视图)。 用户可以通过进入Window-》 Show View-》 Other…菜单查看它们。
  有时会发生视图“最小化”并且似乎从IDE中消失的情况。 当您不熟悉Eclipse时,这可能会导致尝试了解它的去向而感到沮丧。 例如,看下图,似乎Project Explorer视图已经消失了,但是它只是最小化了,您可以单击红色圆圈中的图标来恢复它。 有时该视图实际上已关闭。 当该视图中只有一个选项卡处于活动状态并且我们将其关闭时,就会发生这种情况。 在这种情况下,您可以再次在Window-》Show View-》Other…菜单中启用视图。
  要在不同的视角之间切换,可以使用Eclipse右上方可用的特定工具栏。参见下图。
  默认情况下,另一个可用的视角是“调试”,我们将在以后更深入地介绍。 您可以通过转到Window-》Perspective-》Open Perspective-》Other…菜单来启用其他透视图。
  从Eclipse 4.6(又名Neon)开始,默认情况下,透视图切换器工具栏不再显示透视图名称,而是仅显示与该透视图关联的图标。 这往往会使新手用户感到困惑。 您可以通过在工具栏上单击鼠标右键并选择“显示文本”条目来在其图标附近显示透视图名称,如下所示。
  创建项目
  我们将创建一个简单的应用程序,使Nucleo LD2 LED(绿色的LED)闪烁。
  转到文件-》新建-》 C项目。 Eclipse显示了一个向导,该向导使我们可以创建测试项,见下图
  在项目名称字段中输入hello-nucleo(您完全可以选择喜欢的项目名称)。 实际上,重要的部分是“项目类型”部分。 在这里,我们必须选择我们的Nucleo开发板的STM32系列。 例如,如果我们有NUCLEO-F401RE,则必须选择STM32F4xx C / C ++项目。
  现在单击下一步按钮。 在向导的此步骤中,选择合适的RAM和闪存大小非常重要(如果这些字段与配备Nucleo的MCU的RAM和闪存数量不匹配,将无法启动示例应用程序)。 使用下表为Nucleo板选择正确的值。
  通过以下方式填写第二步的字段,见下图
  现在单击下一步按钮。 在接下来的两个向导步骤中,将所有参数保留为默认值。 最后,在最后一步中,您必须选择GCC工具链路径。 在“设置工具链以在Windows,Linux和Mac OSX上开发STM32应用程序”中,我们已将GCC安装在〜/ STM32Toolchain / gcc-arm文件夹中(在Windows中,该文件夹为C: STM32Toolchain  gcc-arm)。 因此,选择如下图所示的文件夹(键入路径名或使用“浏览”按钮),并确保“工具链名称”字段包含用于ARM嵌入式处理器的GNU工具(arm-none-eabi-gcc),否则从下拉菜单中选择它 。 单击完成按钮。
  我们的测试项目即将完成。 我们只需要修改一件事就可以在Nucleo上运行。 但是,在完成示例之前,最好先看一下GNU ARM插件生成的内容。
  下图显示了生成项目后Eclipse IDE中显示的内容。 项目浏览器视图显示项目结构。 这是第一级文件夹的内容(从上到下):
  includes:此文件夹显示GCC包含文件夹中的所有文件夹
  src:此Eclipse文件夹包含构成我们的应用程序的.c文件。 这些文件之一是main.c,其中包含int main(int argc,char * argv [])例程
  system:此Eclipse文件夹包含许多相关库的头文件和源文件(尤其是ST HAL和CMSIS软件包)
  include:此文件夹包含我们的主应用程序的头文件
  ldscripts:此文件夹包含一些相关文件,这些文件使我们的应用程序可以在MCU上运行
  如前所述,我们需要再做一件修改以使示例项目在Nucleo板上正常工作。 GNU ARM插件生成一个适合Discovery硬件布局的示例项目。 这意味着LED被路由到另一个MCU I / O引脚。 我们需要修改它。
  我们如何知道LED连接到哪个引脚? ST提供了Nucleo板的原理图。查看pdf第4页,我们可以看到LED已连接到PA5引脚,如下图所示。
  PA5是GPIOA端口PIN5的简写,这是在STM32世界中表示GPIO的标准方法。
  现在,我们可以继续修改源代码。 打开Include / BlinkLed.h并转到第19行。在这里,我们找到与LED关联的GPIO的宏定义。 我们需要通过以下方式更改代码:
  Filename: include/BlinkLed.h
  30 #define BLINK_PORT_NUMBER (0)
  31 #define BLINK_PIN_NUMBER (5)
  BLINK_PORT_NUMBER定义GPIO端口(在本例中为GPIOA = 0),BLINK_PIN_NUMBER定义引脚号
  Nucleo-F302R8是唯一具有与用于LED LD2的引脚不同的硬件配置的Nucleo板,因为它已连接到PB13引脚,如示意图所示。 这意味着正确的引脚配置为:
  30 #define BLINK_PORT_NUMBER (1)
  31 #define BLINK_PIN_NUMBER (13)
  现在,我们可以编译项目了。 转到菜单项目-》构建项目。 稍后,我们应该在输出控制台中看到类似的内容[ˆch3-flash-image-size]。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分