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

news2025/3/18 21:12:44

目录

第一点:为什么叫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.coloradmin.cn/o/2317426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven | 站在初学者的角度配置

目录 Maven 是什么 概述 常见错误 创建错误代码示例 正确代码示例 Maven 的下载 Maven 依赖源 Maven 环境 环境变量 CMD测试 Maven 文件配置 本地仓库 远程仓库 Maven 工程创建 IDEA配置Maven IDEA Maven插件 Maven 是什么 概述 Maven是一个项目管理和构建自…

【css酷炫效果】纯CSS实现3D翻转卡片动画

【css酷炫效果】纯CSS实现3D翻转卡片动画 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90490472 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了&am…

并发编程面试题二

1、java线程常见的基本状态有哪些,这些状态分别是做什么的 (1)创建(New):new Thread(),生成线程对象。 (2)就绪(Runnable):当调用线程对象的sta…

Spring Cloud Stream - 构建高可靠消息驱动与事件溯源架构

一、引言 在分布式系统中,传统的 REST 调用模式往往导致耦合,难以满足高并发和异步解耦的需求。消息驱动架构(EDA, Event-Driven Architecture)通过异步通信、事件溯源等模式,提高了系统的扩展性与可观测性。 作为 S…

突破连接边界!O9201PM Wi-Fi 6 + 蓝牙 5.4 模块重新定义笔记本无线体验

在当今数字化时代,笔记本电脑已成为人们工作、学习和娱乐的必备工具。而无线连接技术,作为笔记本电脑与外界交互的关键桥梁,其性能的优劣直接关乎用户体验的好坏。当下,笔记本电脑无线连接领域存在诸多痛点,严重影响着…

Python----计算机视觉处理(Opencv:图像颜色替换)

一、开运算 开运算就是对图像先进行腐蚀操作, 然后进行膨胀操作。开运算可以去除二值化图中的小的噪点,并分离相连的物体。 其主要目的就是消除那些小白点 在开运算组件中,有一个叫做kernel的参数,指的是核的大小,通常…

一周学会Flask3 Python Web开发-SQLAlchemy查询所有数据操作-班级模块

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们来新建一个的蓝图模块-班级模块,后面可以和学生模块,实现一对多的数据库操作。 blueprint下新建g…

Matlab 风力发电机磁悬浮轴承模型pid控制

1、内容简介 略 Matlab 174-风力发电机磁悬浮轴承模型pid控制 可以交流、咨询、答疑 2、内容说明 磁悬浮轴承具有无接触、无摩擦、高速度、高精度、能耗低、不需要需润滑无油污染、可靠性高、寿命长和密封等一系列显著的优点。将磁悬浮技术应用于风力发电机中可以降低风机切入…

FPGA中级项目1——IP核(ROM 与 RAM)

FPGA中级项目1——IP核(ROM 与 RAM) IP核简介 在 FPGA(现场可编程门阵列)设计中,IP 核(Intellectual Property Core,知识产权核)是预先设计好的、可重用的电路模块,用于实…

Matlab 基于专家pid控制的时滞系统

1、内容简介 Matlab 185-基于专家pid控制的时滞系统 可以交流、咨询、答疑 2、内容说明 略 在处理时滞系统(Time Delay Systems)时,使用传统的PID控制可能会面临挑战,因为时滞会导致系统的不稳定或性能下降。专家PID控制通过结…

Unity 笔记:在EditorWindow中绘制 Sorting Layer

在Unity开发过程中,可能会对旧资源进行批量修改,一个个手动修改费人费事,所以催生出了一堆批量工具。 分享一下在此过程中绘制 Sorting Layer 面板的代码脚本。 示意图: 在 EditorGUI 和 EditorGUILayer 中内置了 SortingLayerF…

2024浙江大学计算机考研上机真题

2024浙江大学计算机考研上机真题 2024浙江大学计算机考研复试上机真题 2024浙江大学计算机考研机试真题 2024浙江大学计算机考研复试机试真题 历年浙江大学计算机复试上机真题 历年浙江大学计算机复试机试真题 2024浙江大学计算机复试上机真题 2024浙江大学计算机复试机试真题 …

蓝桥杯嵌入式赛道复习笔记2(按键控制LED灯,双击按键,单击按键,长按按键)

硬件原理解释 这张图展示了一个简单的按键电路原理图,其中包含四个按键(PB0、PB1、PB2、PB3、PA0),每个按键通过一个10kΩ的上拉电阻连接到VDD(电源电压),并接地(GND)。 …

每天五分钟深度学习PyTorch:循环神经网络RNN的计算以及维度信息

本文重点 前面我们学习了RNN从何而来,以及它的一些优点,我们也知道了它的模型的大概情况,本文我们将学习它的计算,我们来看一下RNN模型的每一个时间步在计算什么? RNN的计算 ht-1是上一时刻的输出,xt是本时刻的输入,然后二者共同计算得到了ht,然后yt通过ht计算得到,…

Ubuntu docker安装milvusdb

一、安装docker 1.更新软件包 sudo apt update sudo apt upgrade sudo apt-get install docker-ce docker-ce-cli containerd.io查看是否安装成功 docker -v二、使用国内的镜像下载 milvusdb Docker中国区官方镜像: https://registry.docker-cn.com milvusdb/milvus - Doc…

【优选算法篇】--深度解析之滑动窗口篇

滑动窗口 一、长度最小的子数组二、无重复字符的最长子串三、最大连续1的个数III四、水果成篮 一、长度最小的子数组 长度最小的子数组 解析: 首先看到这题 我们首先想到的是暴力枚举,就是暴力枚举所有子数组和。时间复杂度是O(n^3)。 我们这里用解法…

[STM32]新建工程||一个工程文件应该有哪些基本内容?

目录 一 、开发方法 1.直接使用程序来配置寄存器 2.基于库函数的方式 3.基于HAL库的方式 二 、常规的工程文件分类 STM32芯片型号分类以及缩写 ​三 步骤总结 四 工程架构 五 调用外设基本通用步骤 一 、开发方法 1.直接使用程序来配置寄存器 底层,直接&…

python编写的一个打砖块小游戏

游戏介绍 打砖块是一款经典的街机游戏,玩家控制底部的挡板,使球反弹以击碎上方的砖块。当球击中砖块时,砖块消失,球反弹;若球碰到挡板,则改变方向继续运动;若球掉出屏幕底部,玩家失…

【菜鸟飞】通过vsCode用python访问公网deepseek-r1等模型(Tocken模式)

目标 通过vsCode用python访问deepseek。 环境准备 没有环境的,vscode环境准备请参考之前的文章,另外需安装ollama: 【菜鸟飞】用vsCode搭建python运行环境-CSDN博客 AI入门1:AI模型管家婆ollama的安装和使用-CSDN博客 选读文章…

Figma介绍(基于云的协作式界面设计工具,主要用于UI/UX设计、原型制作和团队协作)

文章目录 注册和登录简单操作说明Figma介绍**核心特点**1. **云端协作与实时同步**2. **跨平台兼容**3. **高效设计工具**4. **原型交互与动效**5. **开发对接友好**6. **插件生态**7. **版本控制与历史记录** **适用场景**- **团队协作**:远程团队共同设计、评审、…