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

目录

第一点:为什么叫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.rhkb.cn/news/35849.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《基于Spring Boot+Vue的智慧养老系统的设计与实现》开题报告

个人主页:@大数据蟒行探索者 一、研究背景及国内外研究现状 1.研究背景 根据1982年老龄问题世界大会联合国制定的标准,如果一个国家中超过65岁的老人占全国总人口的7%以上,或者超过60岁的老人占全国总人口的10%以上,那么这个国家将被定义为“老龄化社会”[1]。 随着国…

微软OneNote无法同步解决方案

目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑,最方便且免费的多设备笔记同步方案就是微软自家的OneNote,使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote,经常会出现无法同步、同步失败&#xff1…

硬件设计抽象级别详解:门级、RTL级、行为级与HLS

硬件设计抽象级别详解:门级、RTL级、行为级与HLS 引言 在数字系统设计领域,硬件描述语言(HDL)提供了多种抽象级别来描述电路功能和结构。从最底层的门级描述到高层的行为级描述,每一种抽象级别都有其特定的用途和优势。理解这些不同级别以及…

WPF程序使用AutoUpdate实现自动更新

AutoUpdate.NET使用 一、AutoUpdater.NET 简介 AutoUpdater.NET 是一个开源库,支持从各种源(如GitHub、FTP、HTTP服务器等)下载并安装更新。它提供了灵活的配置选项,允许开发者根据需求定制更新检查逻辑和用户体验。 二、安装 …

Qwen2-Audio:通义千问音频大模型技术解读

引言:从llm到mlm(audio) 大型语言模型(LLM)的发展日新月异,它们在文本理解、生成、推理等方面展现出惊人的能力。然而,交互模态不仅仅依赖于文字,语音、语调、环境音等听觉信息同样承载着丰富的内容。阿里巴巴通义千问团队,推出了 Qwen-Audio 系列模型,这里我们一起…

问题 | ACOS(X) 与 ACOSD(X)的区别

github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 [TOC](ACOS(X) 与 ACOSD(X)的区别) ACOSD(X) 是反余弦函数,结果以角度形式表示。ACOS(X) 用于计算 X 中每个元素的反余弦值。当 X 为复数时,结…

两款软件助力图片视频去水印及图像编辑

今天给大家分享两款呼声很高的软件,它们都能处理图片和视频去水印相关的问题。其中一款软件在去水印的同时,图像编辑功能也十分出色;另一款软件专注于图片和视频去水印,去除效果好且支持批量处理。下面就来详细了解一下。 Remover…

Hessian矩阵详解与应用

前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 ima 知识库 知识库广场搜索&#…

【软件系统架构】单体架构

一、引言 在软件开发的漫长历程中,架构的选择一直是至关重要的决策。单体架构作为一种经典的架构模式,曾经在许多项目中发挥着不可替代的作用。虽然如今微服务等架构逐渐流行,但理解单体架构对于深入掌握软件架构体系仍然有着重要意义。 二、…

[C++初阶] :从C到C++

目录 C发展史,C语言的特性C新增关键字namespace关键字C语言的命名缺陷(重定义现象)域与指定访问操作符 “::”命名空间域详解namespace std C的输入与输出函数重载什么是重载,重载的几种常见形态重载的作用注意不构成重载的情况 缺省参数1.全…

[快乐学坊management_1] With Cursor | Mysql设计 | 服务接口设计与开发

目录 数据库设计流程 三张表 测试 接口设计 部门管理接口文档 1. 查询所有部门 2. 新增部门 ⭕3. 根据ID查询部门 4. 修改部门 5. 删除部门 (部门分页条件查询) 错误响应示例 接口设计规范 服务端开发 接口开发 数据库设计流程 01 明确业…

实用插件推荐 -------- 一个可以将任意语言(python、C/C++、go、java等)的程序转换为汇编语言的小插件

链接为: Compiler Explorer 界面: 参考自:如何获取虚函数表及内存分析_com的虚函数表怎么寻找-CSDN博客

vue学习八

十七 组件通信方式 1 props 父传子 //父组件 <script setup>//book来源省略import Subview1 from ./Subview1.vue;function updatebook(updatetimes){book.value.updatetimes updatetimes} </script> <template><Subview1 :book"book" :upd…

51单片机的寻址方式(完整)

目录 一、立即数寻址 二、直接寻址 三、寄存器寻址 四、寄存器间接寻址 五、变址寻址 六、位寻址 七、指令寻址 &#xff08;一&#xff09;绝对寻址 &#xff08;二&#xff09;相对寻址 在 51 单片机中&#xff0c;寻址方式是指在执行指令时&#xff0c;CPU 寻找操作…

每日一题:动态规划

如题&#xff08;基础题&#xff09;&#xff1a; 经典的爬楼梯问题&#xff0c;先从递归想起&#xff1b; class Solution { public:int climbStairs(int n) {if(n1)return 1;if(n2)return 2;return climbStairs(n-1)climbStairs(n-2);} }; 之后可以想办法&#xff08;如哈希…

【论文阅读】FairCLIP - 医疗视觉语言学习中的公平性提升

FairCLIP - 医疗视觉语言学习中的公平性提升 1.研究背景与动机2.核心贡献3.方法论细节4.实验结果与洞见5.总结 FairCLIP: Harnessing Fairness in Vision-Language Learning FairCLIP - 医疗视觉语言学习中的公平性提升 Accepted by CVPR2024 github:链接 1.研究背景与动机…

Linux 入门:权限的认识和学习

目录 一.shell命令以及运行原理 二.Linux权限的概念 1.Linux下两种用户 cannot open directory .: Permission denied 问题 2.Linux权限管理 1).是什么 2).为什么&#xff08;权限角色目标权限属性&#xff09; 3).文件访问者的分类&#xff08;角色&#xff09; 4).文…

大语言模型的压缩技术

尽管人们对越来越大的语言模型一直很感兴趣&#xff0c;但MistralAI 向我们表明&#xff0c;规模只是相对而言的&#xff0c;而对边缘计算日益增长的兴趣促使我们使用小型语言获得不错的结果。压缩技术提供了一种替代方法。在本文中&#xff0c;我将解释这些技术&#xff0c;并…

Java高频面试之集合-14

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;为什么 HashMap 的容量是 2 的倍数呢&#xff1f; HashMap的容量被设计为2的幂次&#xff0c;主要基于以下原因&#xff…

TreelabPLMSCM数字化供应链解决方案0608(61页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读&#xff1a;TreelabPLMSCM 数字化供应链解决方案 0608 在当今快速变化的市场环境中&#xff0c;企业面临着诸多挑战&#xff0c;Treelab 数智化 PLM_SCM 行业解决方案应运而生。该方案聚焦市场趋势与行业现状&#xff0c;致力于解…