- 选择和下载Nucleo64开发板所需的开发平台
- 电路图和硬件设置
- 用于STM32 Nucleo64开发板的STM32CubeMX入门
- 使用TrueSTUDIO对STM32 Nucleo64开发板进行编程
- STM32 Nucleo64程序使用按钮控制LED
- 使用TrueSTUDIO调试代码并将其上传到STM32 Necleo64开发板
我们中的许多人应该熟悉流行的微控制器和开发板,例如Arduino,Raspberry Pi,ESP8266,NoduMCU,8051等。事实上,对于大多数人来说,Arduino会是他们的第一个开发板,但是随着我们的深入研究和开始专业的设计,我们将很快意识到Arduino的局限性(如成本,多功能性,稳定性,速度等),并了解向更原生的微控制器平台(如PIC,STM,Renesas等)迁移的需求。
我们已经介绍了一系列PIC单片机教程,这些指南可以指导初学者学习PIC单片机。同样,从本文开始,我们还将计划一系列STM32 Nucleo64开发板教程,这些教程可以帮助绝对的初学者使用STM32平台进行学习和开发。 Nucleo64开发板是低成本且易于使用的平台,适合专业开发人员和业余爱好者使用。如果您不是STM32 Nucleo64开发板的新手,请在继续之前查看此Nucleo64 Review视频以了解该板的基础知识。该视频还演示了如何使用ARM Mbed Platform编程STM32 但是对于本教程,我们将使用意法半导体提供的另一个免费平台TrueTrueUDIO。
注意:STM32 Nucleo64开发板有很多版本,本教程中使用的特定板是NUCLEO-F030R8。我们之所以选择此板,主要是因为其成本低廉。即使您使用的是其他版本,本教程中讨论的大多数内容也足以帮助您入门。
选择和下载Nucleo64开发板所需的开发平台
任何微控制器的入门都需要一个编程IDE,例如我们有用于Arduino板的Arduino IDE,用于AVR微控制器的Atmel Studio,用于PIC的MP Lab等。因此,在这里,我们还需要用于我们的STM32 Nucleo64板的IDE来执行编程和调试。STM32系列由支持以下IDE和工具链的32位微控制器组成:
- IAR嵌入式Workbench®forARM®(EWARM)。
- MDK-ARM Keil
- TrueSTUDIO
- STM32的系统工作台
在这里,对于我们的教程,TrueSTUDIO将用于编写,编译和调试代码,因为即使没有任何许可证要求,它也可以免费下载和使用,甚至用于商业项目。然后,将使用STM32CubeMX为STM32电路板生成外设驱动程序,以简化编程。为了将我们的程序(十六进制文件)上传到我们的开发板上,人们通常使用STM32 ST-LINK Utility工具,但是相反,我们将使用TrueSTUDIO本身来执行此操作。TrueSTUDIO具有调试模式,允许程序员将十六进制文件直接上传到STM32板上。TrueSTUIO和STM32CubeMX都易于下载,只需点击下面的链接,注册并下载设置。然后将它们安装在您的笔记本电脑上。
- 下载STM32Cube MX
- 下载TrueSTUDIO
电路图和硬件设置
在继续进行软件部分和编码之前,让我们为该项目做准备。如本文前面所述,我们将使用按钮来控制LED。现在,如果您已经看过上面的视频链接,那么您应该已经知道STM32开发板的两侧各有两组连接器引脚,称为ST Morpho引脚。我们已将按钮和LED连接到这些引脚,如下电路图所示。
对于该项目而言,电路连接很容易,我们需要将PORTA的PA5处的LED和PORTC的PC13处的开关相对于GND相连。建立连接后,我的测试设置如下所示。
或者,我们也可以使用板上的内置LED和按钮。这些内置的LED和按钮也连接在同一针上,如电路图所示。我们添加了仅用于练习的外部组件。下面的STM32开发板引脚图将很方便地了解每个morpho引脚在板上的连接位置。
用于STM32 Nucleo64开发板的STM32CubeMX入门
步骤1:安装后,启动STM32CubeMX,然后选择访问板选择器以选择STM32板。
第2步:现在,按STM32板名称(例如NUCLEO-F030R8)搜索板,然后单击图中显示的板。如果您有其他董事会,请搜索其各自的名称。该软件将支持意法半导体的所有STM32开发板。
步骤3:现在,单击“是”,如下图所示,以其默认模式初始化所有外围设备。以后我们可以根据项目需要更改所需的内容。
单击“是”后,屏幕将类似于下图和绿色图钉,表明它们是默认启动的。
步骤4:现在,用户可以从类别中选择所需的设置。在本教程的此处,我们将使用按钮切换LED。因此,我们需要将LED引脚设为输出,将开关引脚设为INPUT。
您可以选择任何引脚,但我正在选择PA5,并将其状态更改为GPIO_Output,使其用作输出引脚,如下图所示。
同样,我将PC13选择为GPIO_Input,以便可以读取按钮的状态。
另外,我们也可以从引脚分配和配置选项卡中进行引脚配置,如下所示。
步骤5:在下一步中,用户可以根据外部和内部振荡器为微控制器和引脚设置所需的频率。默认情况下,选择一个内部8 MHz晶体振荡器,并通过使用PLL将这8个晶体振荡器转换为48MHz。这意味着默认情况下STM32开发板或微控制器和引脚将在48MHz上工作。
步骤6: 现在,进入项目经理,为您的项目,项目位置命名,然后选择工具链或IDE。在这里,我们使用的是TrueSTUDIO,因此我选择了如下所示的内容。
步骤7:现在,单击下图中红色圆圈旁边的Generate Code标记。
步骤8:现在您将看到一个弹出窗口,然后单击打开的项目。但是,请确保在此步骤之前已安装TrueSTUDIO。
使用TrueSTUDIO对STM32 Nucleo64开发板进行编程
现在,如果TrueSTUDIO要求工作空间位置,然后提供工作空间位置或使用默认位置,则您的代码或项目将自动在TrueSTUDIO中打开。
用户将看到下面给出的屏幕,然后需要单击红色的角标记。
现在我们可以在TreuSTUDIO IDE中看到代码。在“ src”文件夹下的左侧,我们可以看到已经从STM32Cube为我们生成的其他程序文件(扩展名为.c)。我们只需要编写main.c文件。即使在main.c文件中,CubeMX也已经为我们进行了一些设置,我们只需要对其进行编辑以适合我们的程序即可。此页面底部提供了main.c文件中的完整代码。
STM32 Nucleo64程序使用按钮控制LED
由于所有必需的驱动程序和代码都是由STM32CubeMX生成的,因此我们只需将LED引脚配置为输出,将按钮配置为输入。使用按钮控制led的程序应写入main.c文件中。完整程序可在此页面底部找到。解释如下
我们只编写了用于使用按钮切换LED的代码。为此,我们首先定义LED和按钮的引脚。在这里,我们在PORTA的引脚5处定义了一个LED
#定义LED_PORT GPIOA#定义LED_PIN GPIO_PIN_5
并在PORTC的13号引脚处定义开关。
#定义SW_PORT GPIOC#定义SW_PIN GPIO_PIN_13
然后在main函数中,我们初始化了所有使用的外围设备。
/ *初始化所有已配置的外围设备* / MX_GPIO_Init(); MX_USART2_Init();
然后使用if语句读取按钮,如果发现按钮按下(LOW),则LED将切换其状态。
而(1){/ *用户代码结束* /如果(!HAL_GPIO_ReadPin(SW_PORT,SW_PIN)){HAL_GPIO_TogglePin(SW_PORT,LED_PIN); HAL_Delay(200); } / *用户代码开始3 * /}
这里的HAL_GPIO_ReadPin(SW_PORT,SW_PIN)函数有两个参数,一个是PORT,另一个是连接开关的引脚,在STM32CubeMX中配置外设时,该引脚被配置为INPUT。
使用TrueSTUDIO调试代码并将其上传到STM32 Necleo64开发板
现在,使用编程器电缆将开发板连接至计算机。连接后,将自动下载开发板所需的驱动程序,您可以使用设备管理器进行检查。
然后,按下下图中红色圆圈标记的调试图标,以编译程序并进入调试模式。
在调试模式下,代码将自动上传。现在,我们需要按“ Resume”或F8(在下图的红色电路中标记)来运行代码。
现在我们可以通过按下按钮来测试LED的控制。根据代码,每次按下按钮时,LED都应更改其状态。完整的工作也可以在此页面底部的视频链接中找到。
经过测试后,我们还可以通过按下终止图标终止程序,该图标由下图中的红色圆圈标记。