32单片机入门持续更新中
配套资料为野火霸道V2
初识 STM32
4.1 什么是 STM32 STM32,从字面上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示 32 位,合起 来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今的 32 位控制器当中,STM32 可以 说是最璀璨的新星,它受宠若娇,大受工程师和市场的青睐,无芯能出其右。
4.1.1 STM32 诞生的背景 51 是嵌入式学习中一款入门级的精典 MCU,因其结构简单,易于教学,且可以通过串口编程而 不需要额外的仿真器,所以在教学时被大量采用,至今很多大学在嵌入式教学中用的还是 51。51 诞生于 70 年代,属于传统的 8 位单片机,如今,久经岁月的洗礼,既有其辉煌又有其不足。现 在的市场产品竞争越来越激烈,对成本极其敏感,相应地对 MCU 的性能要求也更苛刻:更多功 能,更低功耗,易用界面和多任务。面对这些要求,51 现有的资源就显得得抓襟见肘。所以无论 是高校教学还是市场需求,都急需一款新的 MCU 来为这个领域注入新的活力。 基于这样的市场需求,ARM 公司推出了其全新的基于 ARMv7 架构的 32 位 Cortex-M3 微控制器 内核。紧随其后,ST(意法半导体)公司就推出了基于 Cortex-M3 内核的 MCU——STM32。STM32 凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多 Cortex-M3 MCU 中 脱颖而出,成为最闪亮的一颗新星。STM32 一上市就迅速占领了中低端 MCU 市场,受到了市场 和工程师的无比青睐,颇有星火燎原之势。 作为一名合格的嵌入式工程师,面对新出现的技术,我们不是充耳不闻,而是要尽快吻合市场的 需要,跟上技术的潮流。如今 STM32 的出现就是一种趋势,一种潮流,我们要做的就是搭上这 趟快车,让自己的技术更有竞争力。
MCU是Microcontroller Unit的缩写,中文翻译为微控制器。它是一种集成了处理器核心、存储器和各种输入输出接口的集成电路芯片,用于控制电子设备的运行。单片机是MCU的一种,指的是在一个芯片上集成了微处理器、存储器和各种接口电路的集成电路。因此,可以说MCU是单片机的一种。
4.2 STM32 能做什么
STM32 属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI 等,可接非常多 的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影, 比如智能手环,微型四轴飞行器,平衡车、移动 POST 机,智能电饭锅,3D 打印机等等。下面我 们以最近最为火爆的两个产品来讲解下,一个是手环,一个是飞行器。
4.2.1 智能手环

图 4‑1 三星 GearFit 智能手环 红圈:STM32F439ZIY6S 处理器(我们简称之为 439),2048KB FLASH ,256KB RAM ,WLCSP143 封装。 橙圈:Macronix MX69V28F64 16 MB 闪存,基于 MCP 封装的存储器,是一种包含了 NOR 和 SRAM 的闪存,这在手环手机这种移动设备中经常使用,优点是体积小,可以减小 PCB 的尺寸。这个 闪存用的 439 的 FSMC 接口驱动。 黄圈:InvenSense MPU-6500 陀螺仪/加速度计,用 439 的 I2C 接口驱动。 绿圈:博通 BCM4334WKUBG 芯片,支持 802.11n,蓝牙 4.0+HS 以及 FM 接收芯片,用 439 的 SDIO 或者 SPI 接口驱动。 显示:1.84”可弯曲屏幕 (Super AMOLED),432 x 128 像素。触摸部分用 439 的 I2C 接口驱动,OLED 显示部分用 LTDC 接口驱动。 表格 4‑1 三星 Gear Fit 和野火 STM32f103“指南者”资源对比
闪存是一种非易失性存储器,它可以实现数据的快速读写操作。闪存通常用于存储程序代码、操作系统、固件以及其他数据。闪存具有快速的读取速度和低功耗的特点,适合用于存储需要频繁读取和写入的数据。常见的闪存类型包括NAND闪存和NOR闪存,它们在存储结构和使用场景上有所不同。闪存广泛应用于各种电子设备中,如手机、平板电脑、相机、固态硬盘等。
| 资源 | 三星 Gear Fit | 指南者 |
| CPU | STM32F439ZIY6S,WLCSP143 封装 | STM32F103VET6,LQPF100 封装 |
| 存储 | NOR+SRAM 16MB,FSMC 接口 | 串行 FLASH 16MB ,SPI 接口 |
| 显示 | 1.84 寸的 AMOLED,RGB 接口,LTDC 驱动 | 3.2 寸电阻屏,FSMC 接口 |
| 陀螺仪 | MPU6050,I2C 接口 | 可外接 MPU6050 模块,I2C 接口 |
| 无线通信 | 蓝牙: 博通 BCM4334,SDIO 或者 SPI 接口 | WIFI:ESP8266,UART 接口 |
除了这几个重要资源的对比,我们的指南者开发板上还板载了 EEPROM,USB 转串口,蜂鸣器, LED,普通按键,电容按键等外设资源,还可以扩展 VS1053 MP3 模块,W5500 以太网模块,利 用这些可以充分的学习 STM32F103VET6 这个芯片。在板子上面,还可以跑系统 ucosiii,学习图 形界面 emwin。如果功夫所至,学完之后,自己都可以做一个类似 Gear Fit 这样的手环。可很多 人又会说,Gear Fit 涉及硬件和软件,整个系统这么复杂,并不是一个人可以完成的。说的没错, 我们可以做不了,但是我们的能力可以无限接近,多学点,技多不压身嘛。

相关文章:
32单片机入门持续更新中
配套资料为野火霸道V2 初识 STM32 4.1 什么是 STM32 STM32,从字面上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示 32 位,合起 来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今…...
蓝桥杯 每天2题 day6
碎碎念:哇咔咔 要不是中间缺勤一天就圆满day7了!最后一晚上!写题复习哇咔咔 唉,睡了一觉就看不下去了,,,看看之前的笔记洗洗睡觉,,, 记得打印准考证带好东西…...
Fast-lio2运行时如何显示轨迹线
修改对应设备的.yaml文件,以velodyne为例: 将 path_en参数改为true即可,运行其他设备,修改对应的参数...
2022年全国青少年信息素养大赛Python国赛第1-10题,含解析答案
01-分苹果 把一堆苹果分给n个小朋友,每个人拿到的苹果数量不同,并且每个人至少有一个。任意输入小朋友的数量n,问这堆苹果至少应该有多少个。输入描述:任意输入小朋友的数量n输出描述:输出这堆苹果至少应该有多少个 样例输入: 3 样例输出: 6 注意: input()内不添…...
python学习笔记——文件操作
1. 文件操作**** 1.1. open()函数**** 参数: 1. File:需要打开的文件 2. Mode:读、写、读写 (1) r:只读 (2) w:只写文件(覆盖) (3) a:只写文件(追加) …...
滑动窗口用法
文章目录 1. 长度最小的子数组(模板)2. 无重复字符的最长字串3. 最小覆盖字串4. 加油站5. 替换字串得到平衡字符串 1. 长度最小的子数组(模板) 题目分析 直接用步骤分析示例1,[]表示窗口,min_length表示满…...
智慧港口整体解决方案(一)
前言 智慧港口建设对创新驱动、转型发展具有重要推动作用加快推动第五代港口发展进程,成为当今港口转变发展方式、 提升企业综合竞争力的主潮流。智慧港口是港口未来发展主要方向 物联网、云计算技术发展智慧港口是物联网、移动互联网、云计算、人工智能等高新 技术与港口功能的…...
ubuntu如何限制系统日志大小?
ubuntu中的系统日志文件件如不及时清理,时间长了会占用硬盘的空间,如下所示: /var/log/journal/4321d62ad63d44cbbc4dff3b6e282b26/system9f5b4d5081d24b319f8b4677cf673a97-0000000000184ca6-00061412655a5a79.journal: 128M /var/log/journ…...
【Linux】线程概念及线程互斥
目录 线程概念 线程优点 线程缺点 线程异常 线程系统编程接口 线程创建及终止 线程等待 使用线程系统接口封装一个小型的C线程库并实现一个抢票逻辑 线程互斥 互斥量的接口 线程互斥实现原理 使用系统加锁接口封装LockGuard 实现自动化加锁 线程安全和可重入函数 …...
测试需求分析
测试需求是什么? --需求文档 测试需求主要解决**“测什么”的问题,一般来自需求规格说明书中原始需求 测试需求应全部覆盖已定义的业务流程,以及功能和非功能**方面的需求 功能:基本用户需求–优先 非功能:界面&#…...
Qt 翻译工具:使用 tr() 函数实现多语言支持
引言 在开发跨平台应用程序时,支持多语言是一个常见需求。Qt 提供了一套完整的国际化工具,帮助开发者轻松实现应用程序的本地化。本文将介绍如何在 Qt 中使用 tr() 函数进行翻译,并总结一些常见的困难和解决方法。 使用 tr() 函数进行翻译 …...
使用 kustomize 对 kubernetes 对象进行声明式管理
补丁实战 策略合并补丁 基准文件:/test/bases/deploy.yml apiVersion: apps/v1 kind: Deployment metadata:namespace: sharkname: my-nginx spec:selector:matchLabels:run: my-nginxreplicas: 2template:metadata:labels:run: my-nginxspec:containers:- name:…...
Android Studio开发学习(六)———TableLayout(表格布局)、FrameLayout(帧布局)
目录 前言 一、Tablelayout (一)Tablelayout的相关简介 (二)TableLayout使用方法 1. 当TableLayout下面写控件、则控件占据一行的大小。(自适应一行,不留空白) 2.多个组件占据一行,则配合TableRow实现…...
c++ override关键字
在C11及之后的标准中,override是一个关键字,用于表示派生类中的成员函数覆盖了基类中的虚函数。 使用override关键字的好处在于它提供了一种明确的方式来指示编译器:该函数打算覆盖基类中的虚函数。如果使用了override关键字,但该…...
卫星影像联合无人机实现农业保险全生命周期监管监测
随着科技的进步,农业保险监管系统的发展日新月异。特别是近年来,随着卫星技术与无人机技术的结合,为农业保险监管系统带来了前所未有的革新。本文将深入探讨如何利用卫星与无人机方案构建高效的农业保险监管系统,并结合实例进行说…...
ChatGLM2-6B_ An Open Bilingual Chat LLM _ 开源双语对话语言模型
ChatGLM2-6B_ An Open Bilingual Chat LLM _ 开源双语对话语言模型 文章目录 ChatGLM2-6B_ An Open Bilingual Chat LLM _ 开源双语对话语言模型一、介绍二、使用方式1、环境安装2、代码调用3、从本地加载模型 4、API 部署 三、低成本部署1、模型量化2、CPU 部署3、Mac 部署4、…...
JAVA的学习日记DAY6
文章目录 数组例子数组的使用数组的注意事项和细节练习数组赋值机制数组拷贝数组反转数组添加 排序冒泡排序 查找多维数组 - 二维数组二维数组的使用二维数组的遍历杨辉三角二维数组的使用细节和注意事项练习 开始每日一更!得加快速度了! 数组 数组可以…...
Grafana告警(邮件)自定义模板配置
一年前给客户部署配置过grafana,告警配置也是用的原始的,客户在使用过程中只需要一些核心点信息,想要实现这个就需要用Grafana的自定义告警模板以及编辑邮件模板。 通知模板 模板信息的配置中查阅了相关资料,自己组装了一套&…...
大话设计模式——六大基本设计原则(SOLID原则)
设计模式 定义:软件开发中,在特定上下文中解决一类常见问题的被证明为有效的最佳实践。可供其他开发者重复使用解决相似问题。 好处: 提高代码的可重用性,减少重复代码。提高代码的可维护性,使代码更易于理解和修改。…...
Qt | Q_PROPERTY属性和QVariant 类
一、属性基础 1、属性与数据成员相似,但是属性可使用 Qt 元对象系统的功能。他们的主要差别在于存取方式不相同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数(即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性值…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
