单片机开发资源分析的实战——以STM32F103C8T6为例子的单片机资源分析

server/2025/3/19 7:31:39/

目录

第一点:为什么叫STM32F103C8T6

从资源手册拿到我们的对STM32F103C8T6的资源描述

第二件事情,关心我们的GPIO引脚输出

第三件事情:去找对应外设的说明部分


前言

本文章隶属于项目:

Charliechen114514/BetterATK: This is a repo that helps rewrite STM32 Common Repositorieshttps://github.com/Charliechen114514/BetterATK

第一点:为什么叫STM32F103C8T6

先不着急,我们先把命名规矩说一下:

部分说明
1. 产品系列固定为“STM32”,表示基于ARM Cortex-M内核的32位微控制器。
2. 产品类型用一个字母表示产品类型: F:通用型 L:低功耗型 W:无线型
3. 产品子系列用三位数字表示产品子系列,指示特定的功能和性能: 101:基本型 102:USB基本型(USB 2.0全速设备) 103:增强型 105/107:互联型
4. 引脚数用一个字母表示封装的引脚数量: T:36引脚 C:48引脚 R:64引脚 V:100引脚 Z:144引脚 I:176引脚
5. 闪存容量用一个字母或数字表示内置的Flash容量: 6:32KB 8:64KB B:128KB C:256KB D:384KB E:512KB G:1MB
6. 封装类型用一个字母表示封装类型: H:BGA封装 T:LQFP封装 U:VFQFPN封装
7. 温度范围用一个数字表示工作温度范围: 6:-40°C 至 85°C 7:-40°C 至 105°C

以STM32F103C8T6作为例子:

  1. STM32:代表基于ARM Cortex-M内核的32位微控制器。

  2. 产品类型:以字母表示,例如“F”代表通用型(General-purpose)。

  3. 子系列:以数字表示,例如“103”代表增强型系列(Performance Line)。

  4. 引脚数:以字母表示,常见选项如C(48脚)、R(64脚)、V(100脚)等。

  5. 闪存容量:以字母或数字表示,这里的数字“8”代表64KB

  6. 封装类型:以字母表示,例如“T”代表LQFP封装。

  7. 温度范围:以数字表示,“6”代表工业级温度(-40℃至85℃)。

从资源手册拿到我们的对STM32F103C8T6的资源描述

笔者在之前的博客中说到了我们的手册可以从哪里来,所以这里我们就不去再重复说下面的资源是从哪里考证的——就是从资源手册的第一页中摘取的。

分类资源描述
核心ARM 32位 Cortex-M3,主频72 MHz,性能90 DMIPS(1.25 DMIPS/MHz),单周期乘法与硬件除法,嵌套中断控制器,43个可屏蔽中断通道,6周期中断响应,支持尾链优化
存储器32~128 KB Flash,6~20 KB SRAM
时钟/复位/电源管理工作电压2.0~3.6 V,带POR/PDR和可编程电压检测器(PVD),4~16 MHz晶振,内部8 MHz RC振荡器,内部32 kHz RC,支持PLL,独立32 kHz RTC晶振(可校准)
低功耗模式睡眠、停止、待机模式,支持VBAT电源供电的RTC和备份寄存器
ADC2个12位ADC,16通道,转换时间1 µs,支持双采样保持,可与高级定时器同步,内置温度传感器,输入范围0~3.6 V
DMA7通道DMA控制器,支持的外设包括定时器、ADC、SPI、I2C、USART
调试接口支持Serial Wire Debug(SWD)与JTAG
通用I/O口最多80个高速I/O,32/49/80个支持5V容限,全部可映射至16个外部中断线,支持原子读/改/写操作
定时器最多7个定时器,包括3个16位通用定时器(最多4个IC/OC/PWM/计数通道),1个16位6通道高级定时器(带PWM/死区/紧急停机),2个看门狗定时器(独立和窗口),1个SysTick 24位递减计数器
通信接口最多9个:2个I2C(支持SMBus/PMBus),3个USART(支持ISO7816、LIN、IrDA、调制解调器控制),2个SPI(最高18 Mbit/s),1个CAN(2.0B),1个USB 2.0全速接口

可以看到,我们的STM32F103C8T6的资源还是非常的丰富的。

第二件事情,关心我们的GPIO引脚输出

我们的单片机最后是依靠GPIO引脚跟外界进行沟通,我们查询了上面的资源之,确定了这个板子是我们的一个可以选择的方案后,下一步,就是看看结合我们的需求,简单的调研一下我们的GPIO引脚的复用情况。

关于GPIO是什么,这个不是我们这篇博客的重点,笔者记得我前前后后说过两次。所以可以翻翻笔者之前的博客,看我的碎碎念。

简单的说,就是我们的GPIO引脚不可能单独的表达含义,我们可以采取复用策略(也就是说把XXXGPIO现在作为一个)

关于GPIO的复用,我们还是要去看资源手册。这一部分的内容一般是Pinouts and pin description那一部分的内容,注意,我们在学习其他的单片机的时候,可能板块不会叫这个名字。

笔者截取了一下我手头的手册的一个截图:

我们一般关心的是Pin name和右侧的一些说明。第一件事情是。

以PB8为例子,我们的PB8可以做普通的IO口,可以用来承受5V的电压(FT标识的部分就是可承受5V的意思),同时,我们的PB8可以做TIM4定时器的第三个通道和硬件IIC的SCL,或者是CAN通信下的接受端(CANRX)

笔者整理了一份STM32F103C8T6的引脚复用图,这个就是我们实际上编程关心的一个图。

引脚号引脚名称类型默认功能复用功能说明
1VBAT电源备用电源-供电给RTC和备用寄存器
2PC13I/OGPIOTAMPER-RTC低功耗I/O,或作为RTC的篡改引脚
3PC14I/OGPIOOSC32_IN32.768 kHz外部晶振输入
4PC15I/OGPIOOSC32_OUT32.768 kHz外部晶振输出
5PD0I/OGPIOOSC_IN外部高速晶振输入
6PD1I/OGPIOOSC_OUT外部高速晶振输出
7NRST复位复位-外部复位引脚
8VSSA电源模拟地-模拟电源地
9VDDA电源模拟电源-模拟电源正极
10PA0I/OGPIOWKUP1, ADC_IN0, TIM2_CH1_ETR
11PA1I/OGPIOADC_IN1, TIM2_CH2
12PA2I/OGPIOADC_IN2, TIM2_CH3, USART2_TX
13PA3I/OGPIOADC_IN3, TIM2_CH4, USART2_RX
14PA4I/OGPIOADC_IN4, SPI1_NSS
15PA5I/OGPIOADC_IN5, SPI1_SCK
16PA6I/OGPIOADC_IN6, SPI1_MISO, TIM3_CH1
17PA7I/OGPIOADC_IN7, SPI1_MOSI, TIM3_CH2
18PB0I/OGPIOADC_IN8, TIM3_CH3
19PB1I/OGPIOADC_IN9, TIM3_CH4
20PB2I/OGPIOBOOT1
21PB10I/OGPIOI2C2_SCL, USART3_TX
22PB11I/OGPIOI2C2_SDA, USART3_RX
23PB12I/OGPIOSPI2_NSS, I2C2_SMBA
24PB13I/OGPIOSPI2_SCK
25PB14I/OGPIOSPI2_MISO
26PB15I/OGPIOSPI2_MOSI
27PC10I/OGPIOUSART3_TX
28PC11I/OGPIOUSART3_RX
29PC12I/OGPIOUSART3_CK
30PD2I/OGPIO-
31PC0I/OGPIOADC_IN10
32PC1I/OGPIOADC_IN11
33PC2I/OGPIOADC_IN12
34PC3I/OGPIOADC_IN13
35PC4I/OGPIOADC_IN14
36PC5I/OGPIOADC_IN15
37PB8I/OGPIOI2C1_SCL, TIM4_CH3
38PB9I/OGPIOI2C1_SDA, TIM4_CH4
39AVSS电源模拟地-模拟电源地
40AVDD电源模拟电源-模拟电源正极
41PA8I/OGPIOMCO, TIM1_CH1
42PA9I/OGPIOUSART1_TX, TIM1_CH2
43PA10I/OGPIOUSART1_RX, TIM1_CH3
44PA11I/OGPIOUSART1_CTS, CAN_RX
45PA12I/OGPIOUSART1_RTS, CAN_TX
46PA13I/OGPIOJTMS-SWDIO
47PA14I/OGPIOJTCK-SWCLK
48PA15I/OGPIOJTDI

第三件事情:去找对应外设的说明部分

这个事情在我们的编程手册中才会涉及到,比如说,我们想要驱动IIC。

就要准备去对应的手册上慢慢翻。ST官方的手册比较全面,会仔细的介绍细节。这里给出的是英文手册的截图。

笔者接触到的流程大致就是如此。


http://www.ppmy.cn/server/176181.html

相关文章

<video>标签的controlsList属性,它能实现哪些功能?

大白话标签的controlsList属性&#xff0c;它能实现哪些功能&#xff1f; <video> 标签的 controlsList 属性是什么 <video> 标签是 HTML 里用来在网页上播放视频的标签。controlsList 属性就像是一个“控制器筛选器”&#xff0c;它能让你控制视频播放器上显示哪…

算法基础篇(蓝桥杯常考点)

算法基础篇 前言 算法内容还有搜索&#xff0c;数据结构&#xff08;进阶&#xff09;&#xff0c;动态规划和图论 数学那个的话大家也知道比较难&#xff0c;放在最后讲 这期包含的内容可以看目录 模拟那个算法的话就是题说什么写什么&#xff0c;就不再分入目录中了 注意事…

爬虫逆向:详细讲述iOS底层原理及机制

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. iOS 系统架构1.1 Core OS 层1.2 Core Services 层1.3 Media 层1.4 Cocoa Touch 层2. iOS 的核心机制2.1 应用生命周期2.2 内存管理2.3 多线程2.4 文件系统2.5 网络通信3. iOS 的启动流程4. iOS 的安全机制4.1 代码签…

微信小程序项目问题:tabBar.borderStyle 字段需为 black,white

问题与处理策略 问题描述 {"tabBar": {"color": "#999","selectedColor": "#3D98FF","backgroundColor": "#fff","borderStyle": "#999","list": [{"pagePath&qu…

C# 中泛型(Generics)‌的核心概念

在 C# 中&#xff0c;‌泛型&#xff08;Generics&#xff09;‌ 是一种强大的编程特性&#xff0c;允许你编写可重用、类型安全的代码&#xff0c;而无需为不同类型重复编写相似的逻辑。泛型的核心思想是‌参数化类型‌&#xff0c;即通过占位符&#xff08;如 T&#xff09;表…

【Linux操作系统——学习笔记二】Linux简单导航命令操作

一、前言 学习Linux&#xff0c;本质上是学习在命令行下熟练使用Linux的各类命令。 命令行&#xff1a;是一种通过输入命令和参数与计算机系统进行交互的方式&#xff0c;可以使用各种字符化命令对系统发出操作指令&#xff0c;打开Linux终端&#xff0c;进入命令行界面。 …

购物车全选功能

在电商平台的购物车页面中&#xff0c;全选功能是提升用户体验的重要特性。我们需要实现以下功能&#xff1a; 点击全选按钮&#xff0c;选中所有商品 商品选择状态变化时&#xff0c;自动更新全选按钮状态 支持动态加载商品列表 代码 $(#allCheck).on(change, function (…

Oracle常见系统函数

一、字符类函数 1&#xff0c;ASCII(c)和CHR(i)字符串和ascii码互转换 SQL> select ascii(Z) ,ascii(H),ascii( A) from dual;ASCII(Z) ASCII(H) ASCII(A) ---------- ---------- ----------90 72 32SQL> select chr(90),chr(72),chr(65) from dual;C…