STM32学习(一)-- stm32简介

目录

前言

一、STM32简介

1.STM32 是什么

2.STM32 应用领域

3.STM32 优势

 二、ARM简介

三、STM32芯片

1.芯片命名规则

 2.型号分类及缩写 

四、STM32F103C8T6

1.STM32F103C8T6 简介

2.片上资源/外设

3.引脚定义

 4.系统结构

 5.启动配置

 6.最小系统电路

 五、总结


前言

哈喽,大家好!本人目前刚开始学习stm32单片机,记录自己个人的学习过程,如果有讲的不好的地方,还请大家指正,非常感谢~~

主要介绍STM32是什么、应用领域、优势、STM32F103C8T6芯片介绍、STM32F103C8T6片上资源/外设、命名规则、系统结构、引脚定义、启动配置、最小系统电路等。

一、STM32简介

1.STM32 是什么

STM32是意法半导体(STMicroelectronics)公司(简称ST公司)基于ARM Cortex-M内核开发的32位微控制器(MCU)产品,在嵌入式系统中广泛应用。

2.STM32 应用领域

STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品、医疗设备、智能家居等。

3.STM32 优势

  • STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器。
  • STM32提供了丰富的功能和接口,包括通用输入/输出引脚、通信接口(如UART、SPI、I2C、CAN等)、模拟输入/输出、定时器、中断控制器等。它们还具有灵活的开发工具链和丰富的软件生态系统,能够为开发者提供便利的开发环境和丰富的应用资源。

 二、ARM简介

  1. ARM既指ARM公司,也指ARM处理器内核。
  2. ARM Cortex-M内核是一种嵌入式处理器内核架构,由英国ARM公司推出。它专门设计用于微控制器(MCU)应用,具有出色的性能、低功耗和高度可定制的特性。
  3. Cortex-M内核系列有多个不同的版本,如Cortex-M0、Cortex-M3、Cortex-M4和Cortex-M7等。每个版本都有不同的特性和性能级别,以满足不同应用的需求。
  4. ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构
  5. ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片
图1 基于Cortex-M3 的MCU

图2 ARM Cortex-M内核系列版本

三、STM32芯片

1.芯片命名规则

图3 STM32芯片命名规则

 2.型号分类及缩写 

STM32将芯片分为LD(Low Density)、MD(Middle Density)、HD(High Density)三类,可以分别称为低级、中级、高级。

ps:对于内存大于等于256k的芯片,含有额外的功能,如:有LCD接口,DMA通过达到12个并且含有DAC等。

表1 芯片型号分类及缩写 

缩写

释义

Flash容量

型号

LD_VL

小容量产品超值系列

16~32K

STM32F100

MD_VL

中容量产品超值系列

64~128K

STM32F100

HD_VL

大容量产品超值系列

256~512K

STM32F100

 LD

小容量产品

16~32K

STM32F101/102/103

MD

中容量产品

64~128K

STM32F101/102/103

HD

大容量产品

256~512K

STM32F101/102/103

XL

加大容量产品

大于512K

STM32F101/102/103

CL

互联型产品

-

STM32F105/107

四、STM32F103C8T6

1.STM32F103C8T6 简介

图4 STM32F103C8T6芯片
  • 系列:主流系列STM32F1
  • 内核:ARM Cortex-M3
  • 主频:72MHz
  • ROM:(Read-Only Memory)只读存储器,64KB
  • Flash存储器:128KB,用于存储程序代码和只读数据
  • SRAM:(静态随机存储器)20KB,用于临时存储数据和堆栈等
  • 供电:2.0~3.6V(标准3.3V)
  • 封装:LQFP48

2.片上资源/外设

片上资源(On-Chip Resources)指的是集成在微控制器芯片上的各种硬件模块、电路和功能单元,用于实现特定功能或提供一定的功能支持。

外设(Peripheral)指的是与微控制器相连的外部设备或模块,例如传感器、执行器、存储器、通信接口等。外设主要通过微控制器上的引脚和片上资源进行连接和控制。

在微控制器中,片上资源通常是指集成在芯片内部,与核心处理器相连的各种硬件模块,例如定时器、通用输入/输出口(GPIO)、串行通信接口(USART、SPI、I2C)、模数转换器(ADC)、直接内存访问控制器(DMA)等。这些片上资源可以被程序通过寄存器配置和控制,实现各种功能和数据交换。

外设则是连接在微控制器芯片引脚上的外部设备或模块,它们不直接属于芯片内部的硬件模块,但通过微控制器的片上资源进行控制和通信。例如,与微控制器相连的传感器、执行器、存储设备、通信接口设备等,都可以视为外设。

通过集成丰富的片上资源和与外部设备通信的外设,微控制器可以实现各种功能,满足不同应用的需求。

ps:实际上,不同系列的STM32微控制器可能具有不同的片上资源和外设组合。(有个印象即可)

表2 STM32F103C8T6 片上资源/外设

英文缩写

名称

英文缩写

名称

NVIC

嵌套向量中断控制器

CAN

CAN通信

SysTick

系统滴答定时器

USB

USB通信

RCC

复位和时钟控制

RTC

实时时钟

GPIO

通用IO口

CRC

CRC校验

AFIO

复用IO口

PWR

电源控制

EXTI

外部中断

BKP

备份寄存器

TIM

定时器

IWDG

独立看门狗

ADC

模数转换器

WWDG

窗口看门狗

DMA

直接内存访问

DAC

数模转换器

USART

同步/异步串口通信

SDIO

SD卡接口

I2C

I2C通信

FSMC

可变静态存储控制器

SPI

SPI通信

USB OTG

USB主机接口

  • NVIC(Nested Vectored Interrupt Controller)是嵌套向量中断控制器,用于管理和控制微处理器中的中断请求。
  • SysTick(System Timer Tick)是一个系统定时器,用于提供一个可编程的定时器,通常用于生成固定时间间隔的中断。
  • RCC(Reset and Clock Control)是复位和时钟控制模块,用于配置和控制微处理器的系统时钟和复位信号。
  • GPIO(General Purpose Input/Output)是通用输入/输出口,用于连接外部设备或传感器,以实现输入和输出功能。
  • AFIO(Alternate Function Input/Output)是备用功能输入/输出控制器,用于配置微处理器的IO口的功能和引脚映射。
  • EXTI(External Interrupt)是外部中断控制器,用于处理外部设备或传感器的中断信号。
  • TIM(Timer)是定时器模块,用于测量时间间隔、产生定时器中断、控制PWM信号等。
  • ADC(Analog-to-Digital Converter)是模数转换器,用于将模拟信号转换为数字信号。
  • DMA(Direct Memory Access)是直接内存访问控制器,用于实现设备之间的数据传输,减轻CPU的数据传输负担。
  • USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是通用同步/异步串行接收/发送器,用于实现串口通信。
  • I2C(Inter-Integrated Circuit)是串行通信总线,用于在微处理器和外部设备之间进行短距离通信。
  • SPI(Serial Peripheral Interface)是串行外设接口,用于在微处理器和外部设备之间进行通信,支持高速数据传输。
  • CAN:控制器局域网(Controller Area Network),用于实现实时数据传输和通信。
  • USB:通用串行总线(Universal Serial Bus),用于高速数据传输和设备之间的通信。
  • RTC:实时时钟(Real-Time Clock),用于记录和维护精确的实时时间。
  • CRC:循环冗余校验(Cyclic Redundancy Check),用于检测数据传输中的错误。
  • PWR:电源(Power),用于管理和控制微控制器的电源供应。
  • BKP:备份寄存器(Backup Registers),用于持久性存储数据。
  • IWDG:独立看门狗(Independent Watchdog),用于监视系统运行状态并执行复位操作。
  • WWDG:窗口看门狗(Window Watchdog),用于灵活的系统监控和复位操作。
  • DAC:数模转换器(Digital-to-Analog Converter),用于将数字信号转换为模拟信号。
  • SDIO:安全数字输入/输出(Secure Digital Input/Output),用于存储和通信的接口。
  • FSMC:静态存储控制器(Flexible Static Memory Controller),用于连接外部存储器的接口模块。
  • USB OTG:USB On-The-Go,在移动设备中实现主机和设备模式的切换以支持双向通信和数据交换。

3.引脚定义

STM32F103C8T6芯片具有48个引脚,这些引脚可以用于连接外部设备和扩展模块。

图5 STM32F103C8T6引脚定义

ps:

  • 标橙色:电源相关引脚;   标蓝色:最小系统相关的引脚;   标绿色:IO口、功能口引脚
  • S:电源;  I:输入;  O:输出;  I/O:输入输出
  • I/O口电平:I/O口所能容忍的电压;(FT:5V;  无FT:3.3V)

        (ps:若无FT且需要接5V电平,则需要加装电平转换电路)

  • 主功能:上电后默认功能(一般和引脚名称相同,若不同则引脚实际功能是主动功能而不是引脚名称的功能)
  • 默认复用功能:I/O口上同时连接的外设功能引脚(配置I/O口时可选择通用I/O口或复用功能)
  • 重定义功能:若两个功能同时复用在一个I/O口,可以把其中一个复用功能重映射到其他端口上(前提是重定义功能表里有对应端口)
表3 STM32F103C8T6引脚定义表
引脚号引脚名称类型I/O口电平主功能默认复用功能重定义功能
1VBAT VBAT
2PC13-TAMPER-RTCI/O PC13TAMPER-RTC
3PC14-OSC32_INI/O PC14OSC32_IN
4PC15-OSC32_OUTI/O PC15OSC32_OUT
5OSC_IN OSC_IN
6OSC_OUT OSC_OUT
7NRST I/O NRST
8VSSA VSSA
9VDDA VDDA
10PA0-WKUP I/O PA0WKUP/USART2_CTS/ADC12_IN0/TIM2_CH1_ETR
11PA1 I/O PA1 USART2_RTS/ADC12_IN1/TIM2_CH2
12PA2 I/O PA2 USART2_TX/ADC12_IN2/TIM2_CH3
13PA3 I/O PA3 USART2_RX/ADC12_IN3/TIM2_CH4
14PA4 I/O PA4 SPI1_NSS/USART2_CK/ADC12_IN4
15PA5 I/O PA5 SPI1_SCK/ADC12_IN5
16PA6 I/O PA6 SPI1_MISO/ADC12_IN6/TIM3_CH1TIM1_BKIN
17PA7 I/O PA7 SPI1_MOSI/ADC12_IN7/TIM3_CH2TIM1_CH1N
18PB0 I/O PB0 ADC12_IN8/TIM3_CH3TIM1_CH2N
19PB1 I/O PB1 ADC12_IN9/TIM3_CH4TIM1_CH3N
20PB2 I/O FT PB2/BOOT1
21PB10 I/O FT PB10 I2C2_SCL/USART3_TXTIM2_CH3
22PB11 I/O FT PB11 I2C2_SDA/USART3_RXTIM2_CH4
23VSS_1 VSS_1
24VDD_1 VDD_1
25PB12 I/O FT PB12SPI2_NSS/I2C2_SMBAI/USART3_CK/TIM1_BKIN
26PB13 I/O FT PB13 SPI2_SCK/USART3_CTS/TIM1_CH1N
27PB14 I/O FT PB14 SPI2_MISO/USART3_RTS/TIM1_CH2N
28PB15 I/O FT PB15 SPI2_MOSI/TIM1_CH3N
29PA8 I/O FT PA8USART1_CK/TIM1_CH1/MCO
30PA9 I/O FT PA9 USART1_TX/TIM1_CH2
31PA10 I/O FT PA10 USART1_RX/TIM1_CH3
32PA11 I/O FT PA11USART1_CTS/USBDM/CAN_RX/TIM1_CH4
33PA12 I/O FT PA12USART1_RTS/USBDP/CAN_TX/TIM1_ETR
34PA13 I/O FT JTMS/SWDIO PA13
35VSS_2 VSS_2
36VDD_2 VDD_2
37PA14 I/O FT JTCK/SWCLK PA14
38PA15 I/O FT JTDI TIM2_CH1_ETR/PA15/SPI1_NSS
39PB3 I/O FT JTDOPB3/TRACESWO/TIM2_CH2/SPI1_SCK
40PB4 I/O FT NJTRST PB4/TIM3_CH1/SPI1_MISO
41PB5 I/O PB5 I2C1_SMBAI TIM3_CH2/SPI1_MOSI
42PB6 I/O FT PB6 I2C1_SCL/TIM4_CH1USART1_TX
43PB7 I/O FT PB7 I2C1_SDA/TIM4_CH2USART1_RX
44BOOT0 BOOT0
45PB8 I/O FT PB8 TIM4_CH3I2C1_SCL/CAN_RX
46PB9 I/O FT PB9 TIM4_CH4I2C1_SDA/CAN_TX
47VSS_3 VSS_3
48VDD_3 VDD_3

 4.系统结构

图6 STM32F103C8T6系统结构

 5.启动配置

ps:X:即无论接什么; 1:即接3.3V电源; 0:即接GND 

(一般情况下BOOT1和BOOT0都接GND,即主闪存存储器(Flash)为启动区域)

图7 STM32F103C8T6的启动配置

 6.最小系统电路

图8 STM32F103C8T6最小系统电路

 五、总结

个人学习资料来源b站视频:

[1-2] STM32简介_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1th411z7sn/?p=2&spm_id_from=333.880.my_history.page.click&vd_source=9778399bc878bb45906a6acdd2554325

  • 8
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32是一款非常流行的嵌入式微控制器系列,它具有强大的性能和丰富的外设资源。在学习STM32时,掌握如何进行Flash读写是非常重要的。 Flash是一种非易失性存储器,可以用来存储程序代码和数据。在STM32中,Flash存储器通常用来存储应用程序代码。下面是一个简单的Flash读写程序的示例: 1.首先,我们需要包含适用于所使用的STM32型号的头文件。例如,对于STM32F4系列,我们需要包含"stm32f4xx.h"。 2.然后,我们需要定义一个指向Flash存储器的指针变量。例如,可以使用如下代码:`uint32_t* flash_address = (uint32_t*)0x08000000;`其中0x08000000是Flash存储器的起始地址。 3.要读取Flash存储器中的数据,我们可以通过以下代码实现:`data = *flash_address;`其中data是一个变量,用于存储读取到的数据。 4.要写入数据到Flash存储器中,我们可以通过以下代码实现:`*flash_address = data;`其中data是要写入的数据。 需要注意的是,STM32的Flash存储器是有写保护机制的,因此在写入数据之前,我们需要禁用写保护。可以使用以下代码禁用写保护:`FLASH->KEYR = 0x45670123; FLASH->KEYR = 0xCDEF89AB;`然后才能进行数据写入。 另外,为了确保数据的完整性,我们可以使用CRC校验来验证Flash存储器中的程序代码的正确性。可以使用库函数来计算校验和,然后将其与预期的校验和进行比较以进行验证。 综上所述,掌握STM32的Flash读写操作对于嵌入式系统的开发非常重要。上述示例代码可以帮助我们快速进行Flash读写操作,同时注意写保护和数据校验可以提高数据的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值