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

devtools/2025/3/19 14:14:53/

目录

第一点:为什么叫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/devtools/168361.html

相关文章

matlab 模糊pid实现温度控制

1、内容简介 matlab162-模糊pid实现温度控制 可以交流、咨询、答疑 2、内容说明 略基于PID电加热炉温度控制系统设计 摘要 电加热炉随着科学技术的发展和工业生产水平的提高,已经在冶金、化工、 机械等各类工业控制中得到了广泛应用,并且在国民经济中占…

Linux各种命令大全

Linux课程笔记 目录结构 /:根目录,唯一顶级目录路径示例:/home/itheima/a.txt 表示根目录下的home/itheima文件夹内的a.txt 基础命令 ls:列出文件 ls [选项] [目录] # 选项: # -l 列表形式显示 # -h 人性化显示文…

【Linux】Bash是什么?怎么使用?

李升伟 整理 什么是 Bash? Bash(Bourne Again Shell)是一种 命令行解释器(Shell),广泛用于 Unix 和 Linux 操作系统。它是 Bourne Shell(sh) 的增强版,提供了更多的功能…

Joker靶机实战攻略

1.安装并开启靶机 2.获取靶机IP 3.访问靶机 4.扫描目录 5.扫描端口 6.访问目录和端口 http://192.168.40.144:8080/ http://192.168.40.144/secret.txt 根据提示应采用爆破登录8080端口网站 7.BP抓包进行密码爆破 导出密码字典:head -n 100 /usr/share/wordl…

使用 `Express.js` 和 `better-sqlite3` 的最佳实践指南

在构建基于 Express.js 和 better-sqlite3 的应用时,遵循一些最佳实践可以帮助你更高效地管理数据库连接、提高代码的可读性和可维护性,并确保应用的安全性和性能。以下是一些详细的建议和示例代码。 一、数据库连接管理 1. 单例模式管理数据库连接 创…

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的起步依赖:快速构建 JavaWeb 项目

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、起步依赖…

使用静态库动态库也要头文件

是的&#xff0c;即使你使用了 QCustomPlot 的导入库&#xff08;例如 .lib 文件&#xff09;和动态链接库&#xff08;.dll 文件&#xff09;&#xff0c;仍然需要包含 qcustomplot.h 头文件。原因如下&#xff1a; 1. 头文件的作用 qcustomplot.h 是 QCustomPlot 的主要头文…

结合基于标签置信度的特征选择方法用于部分多标签学习-简介版

假设 部分多标签学习&#xff08;PML&#xff09;假设&#xff1a;假设样本的标签集合中存在伪正标签&#xff0c;即某些标签可能是错误的。目标是从候选标签集中识别出真实标签。特征与标签的关系假设&#xff1a;假设不同的标签对应的特征子空间可能是不同的&#xff0c;而不…