STM32的开发生态,Cube、HAL库、LL库

这个分享适合刚入门STM32的新手,快速了解STM32的开发生态
我昨天最後讲到我个人建议从标准库学,懂了後再使用STM32CubeIDE,这方法只适合要走韧体开发工程师或者有心想研究这韧体的领域,绝对不适合那种只想要快速开发有功能就觉得OK的人,功能有出来就好,就别学标准库开发了直接用STM32CubeIDE就好,什麽暂存器看法、函示配置方法、脚位宣告等等,这些STM32CubeMX都帮你弄好好了,选好IC点一点图片中的脚位就配置好初始化函示啦~。

接下来我尽量以我了解的东西用简短的方式让大家看一次就懂,先来介绍STM32Cube生态,具我昨天参加的ST线上研讨会,第一是在介绍各个新出的MCU应用范围,我这边简单整理,详细资料可以去ST官网查询。

1.STM32MP1

这颗属於MPU,使用了Cortex-A7核心相对Cortex-M系列大幅提高性能,主要是支持使用Linux系统的用户,内部含有GPU,下图是从会议中的截图MP1架构,可以看到具有双核心A7和M4
https://ithelp.ithome.com.tw/upload/images/20211111/20141979Krs5CoAuYH.png

2.STM32H7

最高性能的MCU,具有双核心M7和M4,480MHz和240MHz,高达2Mbytes的内部Flash

3.STM32U5

今年新出的极低功耗MCU,更高度的安全性,ADC提升到14-bit

再来聊聊STM32Cube的软件开发工具系列

STM32CubeMX:图形化设定工具
STM32CubeIDE:整合开发环境的IDE
STM32CubeProgrammer:烧录程序

STM32CubeMX选定你要开发的MCU型号,在MCU图片上点选你要使用的脚位初始化设定,STM32CubeMX也支援最新的MP1系列MPU,STM32CubeMX可帮助你产生把周边init 好的 C project,有HAL库和LL库可根据使用者自行决定,我之前有提到HAL库是标准库的精简版本,LL库则是从HAL衍生出来的精简版本,几乎都是暂存器操作,这样能大幅缩小原本程序容量,使用IDE还有个好处,就是不用受限於Keil5免费版本的程序大小限,太大就不让你烧入困扰。

STM32CubeIDE是compiler tools ,但它在开新专案有整合CubeMX进去,就算没有下载STM32CubeMX,在STM32CubeIDE里还是会连结到STM32CubeMX我昨天在使用上没下载STM32CubeMX,发现IDE里面连结的MX会有些卡顿,在想是否与软件使用时再与内部所建立的MX做连动所导致的些微卡顿,我在之後又去下载了STM32CubeMX分开使用上就比较顺畅点。

总之分开使用不影响原本的专案,当使用MX视窗设定好脚会後Generate code在IDE软件上初始化也会设定好了~
首先我先放上截图,我设定的UART2来看看跟我使用的标准库设定差别吧

首先是点完Generate code後的UART的初始化函式:
https://ithelp.ithome.com.tw/upload/images/20211111/20141979x2EZbVpyC2.png
再来看看我用标准库开发自己打的UART初始化函式
https://ithelp.ithome.com.tw/upload/images/20211111/201419792Z4dseYah5.png

用IDE点一点就出来,省去了很多时间昨天用到很想跳来用IDE~,由於我有开发标准库的经验,我在看这自动产生的程序码不会很陌生,也大概了每个地方是在做什麽事,我觉得这能力是一个韧体开发该具备的基本能力。
之後也会开始来用这IDE啦~。

昨天我在发表上的QA问答有问到,STM32L系列有提供标准库开发资料吗?,回答:没有目前只有提供HAL库和LL库,我听到这回答我就知道ST已经不在提供新的标准库的程序,以LL库来说会比标准库效率更高,因为LL库几乎都在操作暂存器。

线上研讨会还有提到今年MCU结合AI,也有出了STM32Cube.AI软件,这方面我就没很清楚了,只知道这套软件适合原本就有AI训练的经验的人,套用训练好的Mode在产生对应C code烧给MCU做结合。
我在下面附上相关的教学资料,在研讨会上有人问到有没有相关的中文学习资料,
回答:无

https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs.html

https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/Introduction_to_STM32CubeAI_MOOC.html

STM32Cube.AI影片教学:
https://www.youtube.com/playlist?list=PLnMKNibPkDnFiQd11pDFtDL2aqUZHTjto
https://www.youtube.com/playlist?list=PLnMKNibPkDnEOUdTXlDH7yWN6qyxXPsEb


<<:  YOLO v4 模型训练实作

>>:  LINE DEVELOPER DAY 2021 — 提升 LIFF 的开发体验

Day16-Kubernetes 那些事 - Resource Quotas

前言 昨天的文章讲完 Deployment 以及 ReplicaSet 後相信大家应该对於如何产生更...

[29] 30 天从 Swift 学会 Objective-C:Swift friendly 的 进阶 C 语言部分与 modulemap

在理解完 Objective-C 之後,我们要来面对 C 语言的引用,不得不说 Swift 十分不信...

[ Day 16 ] - 事件

事件 指的是在 DOM 上所发生的事件,换句话是可以是特定的动作被触发後,必须要执行对应的事情。 (...

## [Day27] Video Speed Controller UI

[Day27] Video Speed Controller UI 需要用到的技巧与练习目标 mou...

Day 16 实作测试 (2)

前言 昨天我们写好了测试的 model,今天就来用他实作吧。 test_main 我们先从最简单的 ...