【嵌入式开发-STM32】初识STM32

【嵌入式开发-STM32】初识STM32

一、什么是STM32

STM32是基于ARM Cortex-M内核的32位微控制器,其包括STM32F1xx(低端)、STM32F4xx(中端)、STM32F7xx(高端)等一系列产品。

STM32可以将其拆分为ST、M、32三个部分,其中ST是由意大利SGS微电子公司和法国Thomson半导体公司合并后的意法半导体公司,是一家SOC厂商;M是指其是基于Cortex-M内核的微控制器;32代表32bit。

这里有四个重点概念我想阐述一下:

ARM公司与SOC厂商

  • ARM内核:所有采用ARM内核的芯片都是ARM芯片,ARM公司并不负责实现芯片的设计与生产。
    内核就是CPU中实现运算的核心,ARM内核是一个统称,其有ARM7、ARM9、ARM11、Cortex等内核家族。简单来说相当于ARM公司为所有厂商提供了一个统一的底层标准即为ARM内核。

  • SOC厂商:SOC(System On Chip,片上系统)厂商负责实现芯片的设计与生产,常见的SOC厂商有Qualcomm(高通)、MTK(联发科)、Intel(英特尔)、HiSilicon(海思)等等

微控制器与微处理器

  • 微控制器(Microcontroller):属于处理器,由CPU+片内内存+片内外设三部分组成,单片机就属于微控制器,所有的支持设备都集成在单个芯片上。

  • 微处理器(Microprocessor):属于处理器,可以理解为一个功能强大的CPU,通过增加额外的拓展外设可以组成微计算机系统。

    概括一下两者的区别就在于能否不借助其他外设组件实现与周围环境的通信。

二、STM32的拓展

STM32属于一个微控制器,由STM32最小系统和各种外接的常用通信接口组成,拓展功能非常强大。

1、串口通信(USART,Universal Synchronous/Asynchronous Receiver/Transmitter),用于与串口接口的设备通信。常用的有USB转串口模块、ESP8266-WIFI模块、GPS模块、GSM模块、指纹识别模块等。

下图分别是ESP8266-WIFI模块、USB转TTL串口模块、指纹识别模块。(图源网络,侵权立删)

串口通信模块

2、内部集成电路(I2C),用于与I2C接口的设备通信。常用的有电容屏、陀螺仪MPU6050、带点可擦可编程只读存储器EEPROM等。

3、串行通信接口(SPI,Serial Peripheral Interface),用于跟SPI接口的设备通信。常用的有穿行FLASH、以太网W5500、音频模块VS1053。

4、通用型输入输出(GPIO,General-Purpose Input/Output),其引脚可以供使用者由成功自由使用。常用的如蜂鸣器、LED、Button按键等。

常见的其他拓展接口类型还有:安全数字输入输出(SDIO,Secure Digital Input and Output)、静态存储器控制器FSMC(Flexible Static Memory Controller)、集成电路内置音频总线I2S(Inter-IC Sound)、串行音频接口SAI(Serial Audio Interface)、模/数转换器ADC(Analog-to-Digital Converter)这些以后使用到时再详细介绍。

三、如何确定STM32选型

3.1、STM32的命名方法

ST公司对STM32系列的命名规则十分严格,如下:

ST官方命名规则

我使用的板子是STM32F429IGT6,我以其为例解释一下对应的含义

STM32F4429IGT6含义
STM32家族(Family):32bit的MCU
F产品类型(Product type):Foundation基础型
429具体特性(Specific features):4系列表示高性能且带DSP和FPU
I引脚数目(Pin count):I表示176pin
GFlash大小(Code size):G表示1024KB
T封装(Package):T表示QFP封装,也是最常用的封装类型
6工作温度范围(Temperature):6/A表示工作范围在-40~85℃

3.2、数据手册与参考手册

很多人可能会把数据手册与参考手册混为一谈,实际上两者有相应的区别。

  • 数据手册,也就是常说的Datasheet,也是在设计芯片原理图或者拿到新芯片之后需要首先阅读的手册,在数据手册中会详细说明芯片的功能作用、引脚功能说明、内存映射、芯片上各元件的封装特性等。
    在自行设计芯片时不能天马行空,按照自己的主观意愿完成设计,而是需要对应于数据手册完成设计。
  • 参考手册,参考手册是对片上外设功能的说明以及各寄存器的描述,在利用芯片编程完成对应功能时需要反复查询,其中可能记录了一些元件初始化的流程程序等。

两个手册都建议中英文对照阅读,因为有些时候中译版本可能不太准确。

3.3、选型原则

在完成自己项目需求的前提下尽可能降低成本,影响成本的因素主要有以下三个方面:

1、功耗:内核越高,功耗越高,成本越高

2、资源:引脚越多,资源越多,成本越高

3、内存:Flash越大,ARM越大,成本越高

3.4、设计与打样

这里由于本人只用过嘉立创PCB打样,所以只推荐嘉立创,https://www.jlc.com/

这是第一次较为正式的记录自己的嵌入式学习经历,难免有错误之处,欢迎大家交流指正!

### STM32嵌入式开发第二章教程内容 #### 2.1 开发环境搭建 为了顺利开展STM32项目,开发者需要先配置好相应的开发工具链。这通常涉及到安装集成开发环境(IDE),如Keil MDK,并确保已正确安装目标设备的支持包,例如对于STM32F103系列而言,则应安装对应版本的PACK支持文件[^3]。 #### 2.2 初识硬件平台 本章节会引导读者熟悉所使用的具体型号及其特性,包括但不限于处理器核心架构(Cortex-M3)[^4]、外设接口以及板载资源等基本信息。这部分旨在帮助初学者建立起对物理器件的第一印象并理解其工作方式。 #### 2.3 GPIO端口编程入门 GPIO (General Purpose Input Output) 是微控制器中最基础也是最常用的外围模块之一,在此部分将学习如何通过软件控制引脚状态的变化实现简单的输入输出操作。代码示例展示了设置模式、读取电平值及改变输出高低的方法: ```c // 初始化PA0为推挽输出模式 GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 设置PA0高电平 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); ``` #### 2.4 中断机制初步认识 中断允许CPU暂停当前执行的任务去响应外部事件的发生,这对于实时系统的构建至关重要。这里将以按键按下触发为例说明NVIC(Nested Vectored Interrupt Controller) 的基本概念与应用技巧[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值