最近,我越来越多地遇到适用于STM32控制器的Cube MX和HAL主题。
一方面,有些拥护者喜欢配置的简易性和代码的可读性。
另一方面,信奉者用手书写一切,这对于工作速度和谨慎使用资源至关重要。
为了标记所有i-尝试使用最常用的三个路径CMSIS,LL,HAL编写“ Hello world”。 我们将估算成本(控制器资源,可执行文件的数量,当然还有开发人员的时间)。
本文将包括几个部分:
STM32快速启动。 第1部分软件,材料,Cube MX。
STM32快速启动。 第2部分HAL上的Hello World,在Atollic TrueSTUDIO中设置调试
STM32快速启动。 第3部分LL上的Hello World
STM32快速启动。 第4部分CMSIS上的Hello World
STM32快速启动。 第5部分小结,HAL,LL,CMSIS的比较。
首先,让我们决定我们将实际编程的内容,即找到合适的硬件。
理想的选择是STM32F103C8T6微控制器上的预算板。

可以在整个知名网站上找到此费用,价格为100俄罗斯卢布。
通过关键字搜索:STM32F103C8T6 ARM STM32最低
https://zh.aliexpress.com/af/STM32F103C8T6-ARM-STM32-Minimum.html?SearchText=STM32F103C8T6+ARM+STM32+Minimum为了填充固件并进行调试,还需要程序员
对于初学者和将来使用,ST-LINK V2编程器的中文克隆是理想的选择。
您可以在同一网站上以120俄罗斯卢布的价格购买。

通过关键字搜索ST LINK STLINK ST 252dLink V2 Mini STM8 STM32:
https://en.aliexpress.com/af/ST-LINK-Stlink-ST%25252dLink-V2-Mini-STM8-STM32.html?SearchText=ST+LINK+Stlink+ST%252dLink+V2+Mini+STM8+ STM32要为STM32开发软件,可以使用各种IDE。
最受欢迎的是IAR,Keil,Coocox(Eclipse)。
我们将遵循ST本身最近完全免费和完全提供的道路。
我们将在STM32或普通人Tolik中使用Atollic TrueSTUDIO。
该软件的优点是什么:完全免费,对代码的大小没有限制,有一个好的调试器,易于安装和配置。
缺点:没有自动完成代码。
提供Windows和Linux版本。
在此处下载
https://atollic.com/resources/download/该软件的安装应该不会有任何问题,所有内容都直观易懂,我们选择将其放置在何处,并始终单击“下一步”。
安装后,您将无法运行它,因为除了IDE本身之外,您还需要其他东西。
如果仍然启动它,则将其关闭。
由于TrueSTUDIO是开发和调试工具,因此,我不想手工组装项目(连接所需的库并指定路径),而是获得一些预先配置的文件,您可以在其中立即编写代码而不会造成不必要的麻烦。
为此,请使用Cube MX代码生成器程序或普通百姓“ Kalokub”。
该软件是在STM上写东西的第一个绊脚石:在寄存器和CMSIS或HAL上。
第一种意识形态的捍卫者提出以下论据:Cube MX生成了大量不必要的代码,这也减慢了MK的工作。
辩护者-说自动生成的代码减少了开发时间,从而使开发人员可以快速切换到设备的装订线部分(切换到主要逻辑),并将外围例程提供给专用软件(Cube MX)。
奇怪的是,这两种意识形态都是正确的,并在实践中适用,但只有每种都有自己的条件。
让我们看几个例子:
例1:由于计划每年生产100500件,因此需要开发一种尽可能便宜的设备。 当然,设备价格每增加一卢布,最终设备上就会产生数十万卢布的支出。 此外,在计划的开发中,需要进行大量的计算工作,并以最大速度使用外设(ADC,SPI,UART)。
该设备是完全自主的产品,将来计划在该设备的整个生产期间进行最小的更改。 直到完成样品的开发周期为1-2年。
例2:需要设备的原型,客户可能会感兴趣,他将订购100件类似的设备以转换其设施。 第一批计划的批次应在2个月内发货给客户。 首批测试的大小为10件。
确切的规格将在项目的工作过程中进行调整,但是众所周知,将来会计划对硬件进行多次修订,为此有必要快速调整整个应用逻辑。
在第一个示例中,理想的选择是选择最便宜的控制器,并编写与硬件相关的但最佳的代码,其中通过访问适当的寄存器(CMSIS)来组织与外设的工作。 参与此项目的开发人员应具有特定MK系列外围设备的良好或卓越知识。 理想情况下-当试图在晚上将他叫醒时-他应该立即从中断向量表中命名所需向量的地址。
在第二个示例中,控制器的选择取决于可用的硬件以及编写客户所需功能所需的时间。 因此,软件本身的速度和最优性正在逐渐淡出背景。 没有时间进行手动初始化,就像没有时间解决硬件依赖性一样。
在这种情况下,将选择一个可以在当前区域快速投入生产的控制器,使用Cube MX对其进行初始化,用HAL编写应用程序逻辑,并将原型移交给客户进行测试。 这样的项目可以由任何具有使用目标编程语言技能的普通开发人员来进行。 实际上,不需要了解外围工作的复杂性。
不管这听起来有多可悲-在俄罗斯现代设备开发的现实中-1号示例越来越少见,将指挥棒传递给2号示例。
在本系列文章的最后,我们将返回对示例1和示例2的讨论,现在,我们将继续准备工作区。
在此阶段,我们将
稍作休息,进入
my.st.com并在其上注册一个帐户,因为ST公司的政策不允许未经注册就下载必要的资料。
访问该站点后-
下载STM32 Cube MX。页面底部有一个版本选择按钮,我们需要版本5.0.0。

一路走来,直到我们离开这里,我们再下载两件事,将来会派上用场
https://www.st.com/en/development-tools/stsw-link008.htmlST-LINK V2驱动程序

和
https://www.st.com/zh-CN/development-tools/stm32cubeprog.html程序闪光器。

安装驱动程序,闪存驱动程序和Cub本身不会造成任何困难,我们只同意所有内容并单击。
完整安装必要的软件之后,我们可以开始创建项目。
为此,请运行Cube MX。
在出现的窗口中,单击“访问MCU选择器”按钮。

STM32F103C8T6微控制器已安装在我们的目标板上。
在搜索栏中输入其名称,然后双击以选择找到的唯一选项。
在同一表中,您可以看到我们的MK的主要填充内容(64 KB的闪存,20 KB的RAM等)。

在我们面前出现了示意性描绘的控制器箱,其支腿沿不同的方向散开。
在此阶段,您必须绝对选择连接调试器的方法。
为此,请在左侧菜单的“引脚和配置”选项卡上选择SYS项目,然后在下拉列表中的“调试”名称下设置“串行线”值。
同时,我们从我们的视线中注意到,该程序为控制器助记符上的调试目的保留了两个引脚。

再次提醒我们,我们要使板上的LED闪烁。
为此,您必须首先找出它连接到的特定支脚。
在此我们将帮助电路图:

或更彩色且易于理解的电路板引脚

所需的LED在PC13的腿上。
因此,有必要将此输出配置为在输出模式下工作。
为此:
- 我们在助记符图上找到结论
- 我们右键单击它,从下拉菜单中选择“ GPIO_Output”项
- 转到GPIO菜单,
- 在列表中,选择PC13
- 我们根据屏幕快照填写PC13-TAMPER-RTC配置表,我们对GPIO模式和用户标签参数特别感兴趣

我们继续配置项目,请转到“时钟配置”选项卡。
实际上,这是允许您配置外设时钟设置的最重要的选项卡之一,但是由于我们目前的主要目标不是这一点,因此我们现在不在这里进行任何说明。

转到“项目”选项卡下的“项目管理器”选项卡。
确保填写以下参数:
- 项目名称(最好只使用拉丁字母)
- 将在其中创建项目的目录(最好只使用拉丁字母)
- 我们计划在其中使用该项目的IDE(我们计划使用TrueSTUDIO)

我们在下面的“代码生成器”选项卡下进行浏览。
在这里,我们肯定会注意到“生成外围设备初始化为成对”选项。
因此,我们得到了一个更结构化的项目,其中对于每种外围设备,都有一对C和H文件。

最后一步仍然存在。 子选项卡高级设置。
- 为所有外围模块选择HAL库的类型
- 我们使用当前设置收集项目

在最初启动时,您可能需要下载所选MK系列的库的当前版本。
我们同意下载文件:

我们去加热水壶或煮咖啡:

代码生成器工作结束后,我们立即将其打开:

选择Atollic将在其中存储工作空间的任何文件夹:

成功打开后,我们将看到Atollic TrueSTUDIO for STM的主窗口。
一般信息对我们来说并不重要,因此请立即转到文件树。

在此处找到main.c文件和int main(void)函数:

为了进行自我测试-尝试收集一个空项目
- 在菜单项目->重建项目中
- 在下面选择控制台选项卡
- 成功组装后-应收到题为Build Finished的铭文

在下一部分继续。
PS:我以前在我的
个人博客上发表过这篇文章。