【STM32】STM32的Cube和HAL生态
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、安全和加密等方向点
相关文章:
【STM32】STM32的Cube和HAL生态
1.单片机软件开发的时代变化 1.单片机的演进过程 (1)第1代:4004、8008、Zilog那个年代(大约1980年代之前) (2)第2代:51、PIC8/16、AVR那个年代(大约2005年前) (3)第3代:51、PIC32、Cortex-M0、…...
汇编-EQU伪指令(数值替换)
EQU伪指令将一个符号名称与一个整数表达式或一个任意文本相关联, 它有3种格式 在第一种格式中, expression必须是一个有效的整数表达式。在第二种格式中, symbol是一个已存在的符号名称, 已经用或EQU定义过。在第三种格式中&…...
超声波俱乐部分享:Enter AI native application
11月5日,2023年第十四期超声波俱乐部内部分享会在北京望京举行。本期的主题是:Enter AI native application。 到场的嘉宾有:超声波创始人杨子超,超声波联合创始人、和牛商业创始人刘思雨,蓝驰创投合伙人刘勇…...
软件测试项目实战经验附视频以及源码【商城项目,app项目,电商项目,银行项目,医药项目,金融项目】(web+app+h5+小程序)
前言: 大家好,我是阿里测试君。 最近很多小伙伴都在面试,但是对于自己的项目经验比较缺少。阿里测试君再度出马,给大家找了一个非常适合练手的软件测试项目,此项目涵盖web端、app端、h5端、小程序端,…...
HarmonyOS应用开发-ArkTS基础知识
作者:杨亮Jerry 作为多年的大前端程序开发工作者,就目前的形式,个人浅见,在未来3-5年,移动端依旧是Android系统和iOS系统的天下。不过基于鸿蒙系统的应用开发还是值得我们去花点时间去了解下的,阅读并实践官…...
mybatis嵌套查询子集合只有一条数据
我们再用mybatis做嵌套查询时,有时会遇到子集合只有1条数据的情况,例如下这样: 数据库查询结果 xml <resultMap id"userMap" type"com.springboot.demo.test.entity.User"><id column"uid" property…...
Github 生成SSH秘钥及相关问题
1.生成过程参考:Github 生成SSH秘钥(详细教程)_github生成密钥controller节点生成ssh秘钥-CSDN博客 2.遇到的问题:GitHub Connect: kex_exchange_identification: Connection closed by remote host 注意:如果.ssh文…...
STM32外设系列—MPU6050角度传感器
🎀 文章作者:二土电子 🌸 关注公众号获取更多资料! 🐸 期待大家一起学习交流! 文章目录 一、MPU6050简介二、MPU6050寄存器简介2.1 PWR_MGMT_1寄存器2.2 GYRO_CONFIG寄存器2.3 ACCEL_CONFIG寄存器2.4 PW…...
网站小程序分类目录网源码系统+会员登录注册功能 带完整搭建教程
大家好啊,源码小编今天来给大家分享一款网站小程序分类目录网源码系统会员登录注册功能 。 以下是核心代码图模块: 系统特色功能一览: 分类目录:系统按照不同的类别对网站进行分类,方便用户查找自己需要的网站。用户可…...
【Linux网络】手把手实操Linux系统网络服务DHCP
目录 一、什么是dhcp 二、详解dhcp的工作原理 三、dhcp的实操 第一步:3台机器的防火墙和安全机制都需要关闭!!! 第二步:Linux下载dhcp软件,并查看配置文件位置 第三步:读配置文件…...
Huggingface网页解析和下载爬虫
解析网页: import requests from bs4 import BeautifulSoup# 目标网页URL url https://huggingface.co/internlm/internlm-20b/tree/main# 发送GET请求 response requests.get(url)# 检查请求是否成功 if response.status_code 200:# 使用BeautifulSoup解析HTML…...
C# Winform 自定义带SWITCH的卡片
1、创建卡片用户控件 在控件库中添加用户控件(Windows窗体),命名为Card; 在属性/布局栏设置Size为148,128. 2、修改Card.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; u…...
我用Devchat开发了公务员报名确认系统自动登录脚本,再也不用担心挤不进去了
#AI编程助手哪家好?DevChat“真”好用 # 演示效果 我用Devchat开发了公务员报名确认系统自动登录,再也不用担心挤不进去了 目录 演示效果前言粉丝独家专属红包码DevChat是什么?DevChat AI编程助手有哪些优势一、安装Vscode1、下载vscode链接…...
如何低门槛开发有趣实用的ZigBee产品?
一、什么是 Zigbee 协议? Zigbee 技术是一种连接距离短、功耗低、复杂程度低、数据传输量低的无线通信技术,其命名灵感源自于蜜蜂在群体中的信息传输。它主要通过网关与互联网进行通信,并嵌入各种智能设备,最终实现自动控制和远程…...
ChatGPT和API发生重大中断!
11月9日凌晨,OpenAI在官网发布,ChatGPT和API发生重大中断,导致全球所有用户无法正常使用,宕机时间超过2小时。 目前,OpenAI已经找到问题所在并进行了修复,但仍然不稳定,会继续进行安全监控。 …...
SQL第五次上机实验
1.向图书表(Book)插入以下记录 USE TSGL GO INSERT INTO Book VALUES(7-5402-1800-3,文学类,边城,沈从文,燕山出版社,10,5,5)2.向借阅表插入以下两条记录 USE TSGL GO INSERT INTO Lend VALUES(201207034201,7-5402-1800-3,00366240,2013-04-22),(2012…...
Matplotlib数据可视化综合应用Matplotlib图形配置在线闯关_头歌实践教学平台
Matplotlib数据可视化综合应用图形配置 第1关 配置颜色条第2关 设置注释第3关 自定义坐标刻度第4关 配置文件与样式表 第1关 配置颜色条 任务描述 本关任务:使用colorbar绘制一个热成像图。 编程要求 在右侧编辑器Begin-End处补充代码,根据输入数据绘制…...
CSS实现瀑布流的两种方式
column 多行布局实现瀑布流 1.column 实现瀑布流主要依赖两个属性。 2.column-count 属性,是控制屏幕分为多少列。 3.column-gap 属性,是控制列与列之间的距离。 <!DOCTYPE html> <html lang"en"> <head><meta charset&q…...
Hadoop 视频分析系统
视频分析系统 业务流程 原始数据 vedio.json {"rank":1,"title":"《逃出大英博物馆》第二集","dzl":"77.8","bfl":"523.9","zfl":"39000","type":"影视",&quo…...
Flutter android和ios闪屏页配置
一.概念理解 闪屏页 1.当点击app开始的一瞬间,所呈现出来的页面就是闪屏页。 2.为什么会有闪屏也,由于app启动需要加载代码,这个过程需要耗时,在没有加载完成之前,是看不到app真正的页面。所以app在没有完全加载完时…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...



