【STM32】STM32的Cube和HAL生态

news/2024/6/3 16:57:07 标签: stm32, 嵌入式硬件, 单片机

1.单片机软件开发的时代变化

1.单片机的演进过程

(1)第1代:4004、8008、Zilog那个年代(大约1980年代之前)
(2)第2代:51、PIC8/16、AVR那个年代(大约2005年前)
(3)第3代:51、PIC32、Cortex-M0、M1、M3年代(大约2005年到现在)
(4)第4代:51、STM8/MSP430、PIC、Cortex-M4、M7、低功耗系列(现在到将来5-10年)

2.单片机开发的演进过程

(1)第1代:不讨论,没意义
(2)第2代:汇编和C都有,一般没有库或最多用标准C库
(3)第3代:出现单片机厂商提供的外设库,典型的如STM32的标准库
(4)第4代:库是标配和发展方向,库考虑更多硬件兼容性,库集成更多组件,库面向网络功能
(5)第5代:库面向云端对接、库面向上层语言如python的接口、提供辅助工具如STM32CubeMX

3.演进的内在动力和原因,方向

(1)单片机片上资源越来越多,越来越复杂,单片机编程的工程体量越来越大、复杂度和细节越来越多。因此必须要外设库来简化和加速开发。
(2)单片机型号越来越多,外设分布越来越散,引脚复用越来越多,需要专用配置工具协助工程师来设计引脚复用和基本功能配置,简化开发、快速评估。
(3)联网、USB、文件系统、加密算法、RTOS等第三方组件越来越重要
(4)物联网云管端模型,促进了单片机对联网对接的需求
(5)半导体厂商同质化竞争越来越激烈,不得不在开发生态上下功夫提升竞争力

4.演进的技术方向

(1)单片机开发在走PC、手机等以CPU为核心的产品的老路:底层和细节越来越成熟,ARM提供CPU的库、单片机厂商提供外设库,单片机软件工程师直接基于这些库来构建自己的应用。
(2)提供GUI式的辅助开发工具,加速并简化产品开发
(3)提供一整套开发生态而不只是一个SDK包
(4)提供HAL抽象层驱动来加速产品移植和选型,增加客户粘度。

2.STM32软件开发的各种模式

1、第1代:寄存器开发
2、第2代:标准库开发
3、第3代:HAL/LL库 + STM32CubeMX工具开发

(1)HAL(hardware abstract layer)、LL(lowerlevel layer)
(2)HAL库的优势是便于在不同型号的STM32芯片之间移植,劣势是代码效率低
(3)LL库几乎等同于直接操作寄存器
(4)CubeMX工具是ST的一站式开发包,层级高于SDK包,包含了STM32芯片开发的所有官方资源,提供了友好的使用方法;CubeMX是一个windows上的IDE软件;CubeMX是一个工具包加芯片容器,各系列芯片资料以插件补丁形式安装;
(4)HAL/LL库和CubeMX本质上是独立的东西,只是使用上纠缠在一起了而已。
(5)CubeMX和Keil MDK是不同作用的东西,要搞清楚。

4、我们应该如何学习

(1)拥抱变化,站在时代前沿。固守成规是最愚蠢的。
(2)换汤不换药,本质从未变过,变得只是表面。后面课程中会看到
(3)我推崇的态度:积极学习并使用新东西,好好利用新工具,但不要丢掉老知识和技能。
(4)原来就学了会了标准库的寄存器开发的,继续拓展学习HAL库和新工具就行了,你会发现体力活变少了,核心技能要求还是一样越来越高。
(5)新手入坑本来没底子的,可以直接学习新开发模式,然后逐步向底层靠拢,你会发现内部有不少秘密,这些深挖的东西其实就是前代的那一套······
(6)ARM、单片机厂商、MDK/IAR等IDE厂商、freeRTOS/LiteOS/rt-thread/AliOS/uCOS等厂商、华为云/阿里云/机智云/亚马逊/IBM等云厂商,大家都在布局,都在做体系,要注意去体会各家的不同资源和立场、不同玩法,找到最适合自己的东西来用。

3.STM32CubeMX工具入门

1、STM32CubeMX软件下载和安装

意法半导体-STMicroelectronics

(1)在http://www.stmicroelectronics.com.cn/ 首页搜索STM32CubeMX即可找到下载页
(2)分STM8版本和STM32版本
(3)尽量安装最新版,可以打开旧版本创建的工程;反之不可以。

2、MCU系列的firmware补丁包下载安装

(1)安装包搜STM32Cube也能搜到
(2)可以在CubeMX工具中在线下载安装,但是实际感觉不好用
(3)推荐到STM32官网下载离线包,然后本地导入

查看已经安装哪些依赖

注意导入离线包的版本与软件安装选择要对应得上

3、软件的大体浏览和基本介绍

查看开发板上的芯片信息

4.MDK5的全面介绍

STM32项目工程的搭建-CSDN博客

1、MDK5和之前的版本问题

1)MDK的前身是Keil,主页:www.keil.com。以前主要做51的IDE,后面被ARM收购增加了MDK

2)Keil开发51的是Keil C51 Keil 开发的是ARM的是Keil MDK

3)MDK主要用来开发Cortex-M系列的,ARM9,ARM11不太适合用MDK开发

4)MDK早期开发常用版本3.5 4.x,期间差异不大,到MDK5开始有了很大变化

2、MDK5的下载和安装

MDK5最新版本软件下载:http://www2.keil.com/mdk5
MDK的pack下载路径:https://www.keil.com/pack

keil C51

keil ARM

3、MDK5使用的一些细节

(1)工程建立和输出文件夹设计,MDK5已经默认设置了
(2)C/C++栏下的预定义宏


(3)C/C++栏下的头文件包含设计


(4)use microlib

(5)选择合适芯片

(6)选择正确的调试器型号:STLink

(7)Flash load下载算法设置

4、其他几种STM32开发的IDE

(1)IAR EWARM
(2)RVDS/ADS1.2
(3)gcc
(4)TrueStudio
(5)MDK4

5.STM32的FW补丁结构分析

1、整体情况

(1)每个系列(如L4、F1)是一个整体的补丁包
(2)每个系列都有不同的版本号,而且会不断升级
(3)可以在STM32CubeMX工具中在线升级安装,也可以到官网下载然后本地import
(4)所谓安装其实就是解压开放到了一个位置中

2.文件层级

Drivers

CMSIS

统一,方便移植

6.课程中用到的开发板介绍

1、首选NB476开发板(STM32L476)

因为开发比较晚,所以只能使用HAL库进行开发

F:主功能系列--》性能一般

L:专注与低功耗,不在乎性能

H:性能高

2、兼容讲HC6800 ARM3.0开发板

既可以使用标准库开发也可以使用HAL库开发

3、其他开发板怎么办

(1)HAL库设计的初衷就是解决代码在STM32各MCU系列间移植
(2)建议学习本课程用NB476开发板,学会了其实遇到哪个都能用起来
(3)除原有项目维护外,建议新项目一律切入HAL库不要再用标准库
(4)RTOS方面建议重点学第四季先掌握一个rtos,使用时尽量用liteos、rtt、alios等国产货

7.生态系统真的很重要

1、从小米的物联网生态说起

(1)商业上小米是比较早构建生态的,事实证明很成功
(2)生态系统的本质是资源的更合理、更低成本、更快速配置--小米的手机可以控制小米的家电
(3)信息化让商业生态重要性更高

2、软件开发行业也是生态为王

(1)Wintel时代围绕微软Windows和Office的PC软件生态帝国
(2)iOS的内聚生态成就了苹果的优秀和成功==软件+硬件
(3)android的开放生态主宰了当前的移动互联网时代,并将继续主宰

3、单片机开发领域生态竞争鏖战正酣

(1)物联网时代的来临使单片机站到了风口,列强环伺都盯上这块了
(2)ARM在CPU内核方面是目前霸主,但是也有RISC-V等在挑战
(3)开发环境方面MDK、IAR、gcc、DS等都有人用
(4)芯片方面STM32前几年积累的优势很大(尤其国内),STM32的开发生态也做的很好;但是TI、freescale、瑞萨、Atmel等其他厂商也有各自一定优势
(5)RTOS方面ucos、freertos、liteos(华为)、rtthread、alios(阿里云)等涌现出很多
(6)云方面国内阿里云、华为云、机智云等,国外amazon、google等也有很多
(7)无线通信领域WIFI、BT、nbiot、Lora、4G等多种方式都在快速发展演化
(8)下游应用厂商一大批也都在努力,各种新的开发模式和商业模式每天都在涌现

4、朱老师的看法

(1)开发生态的本质是让开发更快速、更简单、更直达目标、更低成本。
(2)开发者的个人价值和发展和开发生态的价值和发展并不完全重合,甚至有时候还矛盾冲突
(3)建议1:回归本质,打好根基、练好内功,以不变应万变
(4)建议2:积极拥抱变化,学习新技术、新开发方式、新语言、努力跟上时代
(5)单片机开发的未来在于:低功耗、联网连云、RTOS、安全和加密等方向点


http://www.niftyadmin.cn/n/5167402.html

相关文章

如何将bootlooder和APP合成一个文件

转至微信公众号《嵌入式学习规划》 1、前言 嵌入式固件一般分为BootLoader和App,BootLoader用于启动校验、App升级、App版本回滚等功能,BootLoader在cpu上电第一阶段中运行,之后跳转至App地址执行应用程序。 因此,在发布固件的时…

vscode文件跳转(vue项目)

在 .vue 文件中,点击组件名打开 方式1: 在 vue 组件名上,桉住ctrl 鼠标左键 // 重新打开一个tab 方式2: 在 vue 组件名上,桉住ctrl shift 鼠标左键 // 在右侧拆分,并打开一个tab .vue文件的跳转 按住 …

“未来集成电路新理论与技术基础研究”专项项目申请指南

源自:国家自然基金委员会 “人工智能技术与咨询” 发布 集成电路是信息时代重要的技术基础,也是国家战略竞争力的重要标志,其重要性源于其对于现代社会经济发展的基础性作用和国家安全的重要保障。它不仅在能源安全与碳中和方面发挥着关键…

基于讯飞星火大语言模型开发的智能插件:小策问答

星火大语言模型是一种基于深度学习的自然语言处理技术,它能够理解和生成人类语言。这种模型的训练过程涉及到大量的数据和复杂的算法,但最终的目标是让机器能够像人一样理解和使用语言。 小策问答是一款基于星火大语言模型的定制化GPT插件小工具。它的主…

Stable Diffusion webui 源码调试(一)

Stable Diffusion webui 源码调试(一) 个人模型主页:LibLibai stable-diffusion-webui 版本:v1.4.1 内容更新随机,看心情调试代码~ 调试txt2img的参数和工作流 文件 /work/stable-diffusion-webui/modules/txt2img…

stable diffusion为什么能用于文本到图像的生成

推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具: DreamTexture.js自动纹理化开发包 - NSDT 稳定扩散获得如此多关注的原因 如果你还没有看过它:稳定扩散是一个文本到图像的生成模型,你可以输入一个文本提示,比如…

RapidSSL证书

RapidSSL是一家经验丰富的证书颁发机构,主要专注于提供标准和通配符SSL证书的域验证SSL证书。在2017年被DigicertCA收购后,RapidSSL改进了技术并开始使用现代基础设施。专注于为小型企业和网站提供基本安全解决方案的SSL加密。RapidSSL它具有强大的浏览器…

代码随想录-广度优先搜索理论基础及相关习题

广度优先搜索理论基础 广搜的搜索方式就适合于解决两个点之间的最短路径问题。因为广搜是从起点出发,以起始点为中心一圈一圈进行搜索,一旦遇到终点,记录之前走过的节点就是一条最短路。 广搜是一圈一圈的遍历方式,如下图&#x…