【STM32】初识STM32

news/2025/3/31 22:27:20/

目录

    • 1、 什么是STM32
      • 1.1、STM32的字面含义
      • 1.2、STM32诞生的背景
    • 2、STM32能做什么
      • 2.1、STM32有什么
      • 2.2、身边常见的电子产品
    • 3、STM32怎么选型
      • 3.1、STM32分类
      • 3.2、ST的32位微控制器产品线
        • 3.2.1、STM32F103VET6
      • 3.3、STM32的命名方法
      • 3.4、如何分配原理图引脚
      • 3.5、数据手册中对引脚的功能定义
      • 3.6、引脚的功能定义解读
      • 3.7、PCB哪里打样
    • 4、STM32常用几种开发方式
      • 对比总结
      • 示例
    • 5、STM32基于什么架构
      • 5.1、基于ARM Cortex架构
      • 5.2、ARM的概念
      • 5.3、ARM内核分类
            • 5.3.1、按代数
            • 5.3.2、按系列
      • 5.4、内核与外设

1、 什么是STM32

1.1、STM32的字面含义

1、ST— 意法半寻体,是一个公司名,即SOC厂商
2、M— Microelectronics的缩写,表示微控制器,大家注意微控制
器和微处理器的区别
3、32— 32bit的意思,表示这是一个32bit的微控制器

1.2、STM32诞生的背景

1、技术的更替,这个是最主要的原因
2、市场的需求(成本、性能、功耗、GUI、操作系统),传统的8/16位的微控制器,
久经岁月的洗礼,如今虽有余晖,当面对这些需求时更显的是捉襟见肘
3、ST的努力(产品线丰富、开发简单易上手—基于固件库开发),让STM32在众多的
基于Cortex-M内核的微控制器中脱引而出,成为最璀璨的新星

2、STM32能做什么

2.1、STM32有什么

STM32属于一个微控制器,自带了各种常用通信接口,功能非常强大
1、串口—USART,用于跟跟串口接口的设备通信,比如:USB转串口模块、ESP8266
WIFI、GPS模块,GSM 模块,串口屏、指纹识别模块
2、内部集成电路—I2C,用于跟I2C接口的设备通信,比如:EEPROM、电容屏、陀螺
仪MPU6050、0.96寸OLED模块
3、串行通信接口—SPI,用于跟SPI接口的设备通信,比如:串行FLASH、以太网
W5500、音频模块VS1053
4、SDIO、FSMC的超级、I2S、ADC、GPIO

2.2、身边常见的电子产品

智能手环,微型四轴飞行器,平衡车、扫地机、移动POST机,智能电饭锅,3D打印机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、STM32怎么选型

3.1、STM32分类

在这里插入图片描述

3.2、ST的32位微控制器产品线

在这里插入图片描述

3.2.1、STM32F103VET6
  • 内核架构: ARM Cortex-M3
  • 引脚: 100
  • FLASH大小: 512kB
  • 封装: QFP

不同型号性能有差异, 但开发和应用是相通的, 甚至可以直接迁移

3.3、STM32的命名方法

在这里插入图片描述

在这里插入图片描述

3.4、如何分配原理图引脚

在这里插入图片描述

3.5、数据手册中对引脚的功能定义

在这里插入图片描述

3.6、引脚的功能定义解读

在这里插入图片描述

3.7、PCB哪里打样

在这里插入图片描述

4、STM32常用几种开发方式

  • 寄存器模式
  • 标准库模式
  • LL库
  • HAL库

对比总结

开发方式性能开发效率代码可读性资源占用适用场景
寄存器开发最高最低较差最少高性能、实时控制、优化需求高
标准外设库较高中等较好较少旧项目维护、简单应用
LL库中等较好较少高性能、精细控制硬件
HAL库中等最高最好较多快速开发、复杂应用、新项目

示例

#寄存器直接操作
GPIOA->ODR |= (1 << 5);  // 置高PA5
GPIOA->ODR &= ~(1 << 5); // 置低PA5
#标准库
GPIO_SetBits(GPIOA, GPIO_Pin_5);  // 置高PA5
GPIO_ResetBits(GPIOA, GPIO_Pin_5); // 置低PA5
#LL库
LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_5);// 置高PA5
LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_5);// 置低PA5
# HAL库
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);  // 置高PA5
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 置低PA5

5、STM32基于什么架构

5.1、基于ARM Cortex架构

5.2、ARM的概念

  • ARM公司(现为Arm Holdings)是一家专注于研发高效低功耗处理器架构的公司,其设计被广泛应用于嵌入式系统、移动设备和物联网领域。核心业务为处理器架构设计IP授权
  • ARM公司设计的架构, 以及对应的产品
    • Advanced RISC Machine,是一种基于精简指令集计算(RISC)的处理器架构。
    • 高效的功耗比和强大的性能广泛应用于嵌入式系统,包括STM32。

5.3、ARM内核分类

5.3.1、按代数

ARMv1 ~ ARMv9

5.3.2、按系列
  • Cortex-M系列 : 专为嵌入式微控制器设计。
    • Cortex-M0/M0+:低功耗,适合简单控制任务。(简单的传感器, 小玩具, 消费电子)
    • Cortex-M3/M4:高性能,支持DSP指令,适合复杂应用。 (功能强一点的工业产品或消费产品, 主控)
    • Cortex-M7:更高性能,适合实时性要求高的任务 (高级功能的产品)
  • Cortex-R系列:实时性要求高的嵌入式系统。
  • Cortex-A系列:用于高性能应用,如手机和平板。
  • Cortex-X系列: 为高性能应用推出的“定制级”核心

5.4、内核与外设

ARM公司并不直接生产芯片, 而是开发并授权内核给其他半导体厂商, 在此基础上设计和定制并生产

A系列: 高通, 联发科, 苹果, 三星, 华为, 博通

M系列: 意法半导体(ST) , 恩智浦(NXP)

在这里插入图片描述

  • 内核(Core) : 负责执行指令和逻辑运算,是芯片的核心计算单元。

    • 运算单元(ALU):负责加减乘除等运算。

    • 寄存器组:用于存储临时数据和状态。

    • 指令集:如ARM Cortex-M系列支持的Thumb-2指令集。

    • 中断管理:如NVIC(嵌套向量中断控制器)。

  • 外设(Peripheral) :与外界交互,完成各种硬件功能,例如I/O操作、计时、通信等。

    • 通信接口:UART、SPI、I2C等。
    • 定时器:用于时间控制或计数。
    • ADC/DAC:模拟信号与数字信号的转换。
    • GPIO:通用输入输出引脚。

http://www.ppmy.cn/news/1583956.html

相关文章

数据可视化TensorboardX和tensorBoard安装及使用

tensorBoard 和TensorboardX 安装及使用指南 tensorBoard 和 TensorBoardX 是用于可视化机器学习实验和模型训练过程的工具。TensorBoard 是 TensorFlow 官方提供的可视化工具&#xff0c;而 TensorBoardX 是其社区驱动的替代品&#xff0c;支持 PyTorch 等其他框架。以下是它…

【HTML5游戏开发教程】零基础入门合成大西瓜游戏实战 | JS物理引擎+Canvas动画+完整源码详解

《从咖啡杯到财务自由&#xff1a;一个程序员的合成之旅——当代码遇上物理引擎的匠心之作》 &#x1f31f; 这是小游戏开发系列的第四篇送福利文章&#xff0c;感谢一路以来支持和关注这个项目的每一位朋友&#xff01; &#x1f4a1; 文章力求严谨&#xff0c;但难免有疏漏之…

无需docker三步安装deepseek可视化操作软件-Open-WebUI

在以前安装Open-WebUI时&#xff0c;需要通过docker安装, 针对小白来讲呢有些麻烦, 因此这里推荐使用python环境安装Open-WebUI,简单快捷上手快! 1. Mac安装python3.11 以上的环境, windows同学直接官网下载安装包msi,双击安装即可1.1 Mac直接安装 python3.11brew install pyt…

小迪安全109-php模型动态调试,反序列化,变量覆盖,tp框架,原生pop链

案例一 原生代码变量覆盖&#xff0c;duomicms 变量覆盖是什么 这个时候为什么会输出xiaodi呢 就是因为$ab所以$$a$b 所以就让$bxiaodi 搞不到源码&#xff0c;看老师的学吧 这一般在web端页面是看不到&#xff0c;也不好发现&#xff0c;代码可以看关键字和函数 例如$$这…

Flink介绍与安装

Apache Flink是一个在有界数据流和无界数据流上进行有状态计算分布式处理引擎和框架。Flink 设计旨在所有常见的集群环境中运行&#xff0c;以任意规模和内存级速度执行计算。 一、主要特点和功能 1. 实时流处理: 低延迟: Flink 能够以亚秒级的延迟处理数据流&#xff0c;非常…

使用el-select回显时显示value,不显示对应的label

原因&#xff1a;后端传过来的是string类型 解决&#xff1a;向后端传过来的String类型的数据强制转换为Number类型 代码&#xff1a; <el-select clearable v-model"deviceinfo.Type" placeholder"请选择类型"><el-optionv-for"dict in ty…

【计算机操作系统】线程的概念和特点

1、什么是线程&#xff0c;为什么要引入线程&#xff1f; 还没引入进程之前&#xff0c;系统中各个程序只能串行执行。 比如&#xff1a;当我们在使用QQ与好友视频时&#xff0c;我们可以给其他好友发信息&#xff0c;发送文件...&#xff0c;我们知道进程是程序的一次执行&am…

persist 应用自启流程

什么自启应用? 通常应用会在AndroidManifest.xml中配置自身的各种行为,比如需要再系统开机时就把自己的进程唤醒,通常情况下会在AndroidManifest.xml中配置android:persistent="true" 为什么配置android:persistent="true"后就能做到自启? 在系统启…