STM32 是意法半导体推出的一系列基于 ARM Cortex – M 内核的 32 位微控制器

一、核心处理器

STM32 板子的核心是基于 ARM Cortex – M 内核的处理器,它就像整个系统的 “大脑”,负责执行各种指令和处理数据。内核包含了运算器、控制器和寄存器等组件,能够进行算术运算、逻辑运算以及对整个系统的控制。

1.运算器是处理器中负责数据运算的核心部件,它能对数据进行算术运算和逻辑运算。在 STM32 的 Cortex – M 内核里,运算器可快速处理数据,以支持各种应用程序的运行。

 运算器从寄存器中获取操作数,对其进行相应的运算,然后将运算结果再存回寄存器。例如,执行加法运算时,运算器从两个指定的寄存器中读取数据,将它们相加后,把结果存到另一个指定的寄存器中。

STM32 的运算器支持多种数据类型,如 8 位、16 位和 32 位整数,部分还支持单精度浮点数运算。在处理不同类型的数据时,要根据需求合理选择数据类型,以平衡精度和性能。例如,在简单的传感器数据采集场景中,使用 8 位或 16 位整数可能就足够了;而在需要高精度计算的应用中,可能需要使用浮点数。

2.控制器是整个处理器的指挥中心,它负责协调和控制处理器内各个部件的工作,确保指令按照正确的顺序执行。 

控制器依据程序计数器(PC)的值从存储器中读取指令,对指令译码后生成控制信号,控制运算器、寄存器等部件完成指令规定的操作。每执行完一条指令,PC 的值会自动更新,指向下一条要执行的指令。

控制器负责处理各种异常和中断事件,如复位、外部中断、定时器中断等。当发生异常或中断时,控制器会暂停当前正在执行的程序,保存现场,然后跳转到相应的异常处理程序或中断服务程序中执行。处理完成后,再恢复现场,继续执行原来的程序。在编写中断服务程序时,要尽量减少执行时间,以避免影响系统的实时性。

3.寄存器是位于处理器内部的高速存储单元,用于临时存放数据和指令,其读写速度远高于外部存储器(如闪存和 RAM)。

CPU 在执行指令时,会根据指令的要求从寄存器中读取数据,或者将处理结果写入寄存器。寄存器的访问速度极快,能够满足处理器高速运算的需求。不同类型的寄存器在处理器中扮演着不同的角色,共同协作完成数据处理和指令执行的任务。

二、存储器

1.闪存(Flash):用于存储程序代码和常量数据。当板子上电启动时,处理器会从闪存中读取程序代码并开始执行。闪存具有掉电数据不丢失的特性,适合长期保存程序。

闪存的编程和擦除操作需要遵循一定的时序和规则。在进行编程操作时,需要先将相应的扇区擦除,然后再写入数据。擦除操作会将扇区中的所有数据清零,因此在进行擦除操作之前,需要备份重要的数据。

闪存的擦除次数是有限的,一般为 10 万次到 100 万次不等。在设计程序时,要尽量减少对闪存的擦除操作,或者采用磨损均衡算法来延长闪存的使用寿命。

2.随机存取存储器(RAM):程序运行时,数据和变量会被临时存储在 RAM 中。RAM 的读写速度较快,能够满足处理器快速访问数据的需求,但掉电后数据会丢失。在嵌入式系统中,RAM 资源通常有限,需要优化内存使用。

在 STM32 中,需要合理管理 RAM 空间。可以使用静态内存分配和动态内存分配两种方式。静态内存分配是在编译时就确定变量的内存空间,而动态内存分配是在运行时根据需要分配内存。在使用动态内存分配时,要注意内存泄漏和内存碎片问题。

三、时钟系统

时钟系统为 STM32 提供了工作的节拍,就像人的心跳一样。它产生的时钟信号用于同步各个组件的操作。STM32 通常有多个时钟源,如内部 RC 振荡器、外部晶振等,并且可以通过时钟配置寄存器对时钟进行分频、倍频等操作,以满足不同外设和系统的时钟需求。

四、外设模块

1.GPIO:可用于连接外部设备,如按键、LED 灯等。通过配置 GPIO 的模式(输入或输出),可以实现对外部设备的读取和控制。

GPIO 有多种工作模式,如输入浮空、输入上拉、输入下拉、模拟输入、推挽输出、开漏输出、复用推挽输出、复用开漏输出等。在配置 GPIO 时,需要根据实际需求选择合适的工作模式。例如,当连接按键时,通常使用输入上拉或输入下拉模式;当连接 LED 灯时,通常使用推挽输出模式。

2.串口通信接口(UART,SPI,IIC等):用于与其他设备进行数据通信。例如,UART 可以实现与计算机或其他串口设备的通信,SPI 常用于与外部传感器或存储器进行高速数据传输,I2C 则适用于连接多个低速设备。

3.模拟外设(ADC,DAC):ADC(模拟 – 数字转换器)可以将模拟信号转换为数字信号,常用于读取传感器的模拟输出;DAC(数字 – 模拟转换器)则将数字信号转换为模拟信号,可用于输出音频信号等。

4.定时器(TIM):生成PWM、测量脉冲宽度、定时中断等。

5.DMA:直接内存访问,无需CPU干预即可传输数据(如ADC到内存)。

STM32 的 DMA 控制器通常有多个通道,每个通道可以独立地进行数据传输。在使用 DMA 时,需要选择合适的 DMA 通道,并配置相应的寄存器,如源地址、目标地址、传输数据长度等。

五、电源管理

支持多种低功耗模式(Sleep、Stop、Standby),通过降低时钟或关闭外设以节省能耗。

 

本文部分内容由豆包生成,仅供个人学习使用。后续会更详细学习stm32所需要掌握的内容

作者:早睡冠军候选人

物联沃分享整理
物联沃-IOTWORD物联网 » STM32简述与基础理解

发表回复