單片機開發資源分析的實戰——以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.pswp.cn/pingmian/72870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72870.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

貪心算法(9)(java)最優除法

題目: 給定一正整數數組 nums,nums中的相鄰整數將進行浮點除法。例如,[2,3.4]->2/3/4. 例如,nums [2,3,4],我們將求表達式的值“2/3/4"。 但是,你可以在任意位置添加任意數目的括號,來改變算…

騰訊云MySQL數據庫架構分析與使用場景

TDSQL-C for MySQL TDSQL-C MySQL 版(TDSQL-C for MySQL)是騰訊云自研的新一代云原生關系型數據庫。融合了傳統數據庫、云計算與新硬件技術的優勢,為用戶提供具備高彈性、高性能、海量存儲、安全可靠的數據庫服務。TDSQL-C MySQL 版100%兼容…

榮耀手機卸載應用商店、快應用中心等系統自帶的

1.下載abd ADB Download - Get the latest version of ADB and fastboot 2.手機打開開發者選項 3.手機接電腦打開USB調試 4.下載MT管理器查看系統包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 這邊是…

星型拓撲網絡發生網絡風暴

在星型拓撲網絡中,所有的設備(如計算機、打印機等)通過一個中心設備(通常是交換機或集線器)連接在一起。 星型拓撲網絡中發生網絡風暴時的情況: 網絡風暴的表現 1.廣播風暴:在星型拓撲中&…

網絡流基本概念及實現算法

基本概念 流網絡 對于一個有向圖, 抽象成水管里的水的模型, 每根管子有容量限制, 計為 G ( V , E ) G (V, E) G(V,E), 首先不考慮反向邊 對于任意無向圖, 都可以將反向邊轉化為上述形式 如果一條邊不存在, 定義為容量為 0 0 0, 形式上來說就是 c ( u , v ) 0 c(u, v) 0 c(…

【css酷炫效果】純CSS實現球形陰影效果

【css酷炫效果】純CSS實現球形陰影效果 緣創作背景html結構css樣式完整代碼基礎版進階版(動態版) 效果圖 想直接拿走的老板,鏈接放在這里:上傳后更新 緣 創作隨緣,不定時更新。 創作背景 剛看到csdn出活動了,趕時間&#xff0…

Linux如何在設備樹中表示和引用設備信息

DTS基本知識 dts 硬件的相應信息都會寫在.dts為后綴的文件中,每一款硬件可以單獨寫一份xxxx.dts,一般在Linux源碼中存在大量的dts文件,對于arm架構可以在arch/arm/boot/dts找到相應的dts,一個dts文件對應一個ARM的machie。 dtsi 值…

【數學建模】模糊綜合評價模型詳解、模糊集合論簡介

模糊綜合評價模型詳解 文章目錄 模糊綜合評價模型詳解1. 模糊綜合評價模型概述2. 模糊綜合評價的基本原理2.1 基本概念2.2 評價步驟 3. 模糊綜合評價的數學模型3.1 數學表達3.2 模糊合成運算 4. 模糊綜合評價的應用領域5. 模糊綜合評價的優缺點5.1 優點5.2 缺點 6. 模糊綜合評價…

C++20 中的同步輸出流:`std::basic_osyncstream` 深入解析與應用實踐

文章目錄 一、std::basic_osyncstream 的背景與動機二、std::basic_osyncstream 的基本原理三、std::basic_osyncstream 的使用方法(一)基本用法(二)多線程環境下的使用(三)與文件流的結合 四、std::basic_…

C/C++藍橋杯算法真題打卡(Day8)

一、P8780 [藍橋杯 2022 省 B] 刷題統計 - 洛谷 算法代碼&#xff1a; #include<bits/stdc.h> // 包含標準庫中的所有頭文件&#xff0c;方便使用各種數據結構和算法 using namespace std; // 使用標準命名空間&#xff0c;避免每次調用標準庫函數時都要加 std::in…

JavaScript 編程:從基礎到高級應用的全面探索

引言 JavaScript 作為一種廣泛應用于 Web 開發的腳本語言&#xff0c;已經成為現代互聯網不可或缺的一部分。它不僅可以為網頁增添交互性和動態效果&#xff0c;還能在服務器端&#xff08;如 Node.js&#xff09;進行后端開發。本文將從 JavaScript 的基礎語法開始&#xff0…

第十三次CCF-CSP認證(含C++源碼)

第十三次CCF-CSP認證 跳一跳滿分題解 碰撞的小球滿分題解遇到的問題 棋局評估滿分題解 跳一跳 題目鏈接 滿分題解 沒什么好說的 基本思路就是如何用代碼翻譯題目所給的一些限制&#xff0c;以及變量應該如何更新&#xff0c;沒像往常一樣給一個n&#xff0c;怎么讀入數據&…

Pytorch使用手冊—自定義函數的雙重反向傳播與自定義函數融合卷積和批歸一化(專題五十二)

1. 使用自定義函數的雙重反向傳播 有時候,在反向計算圖中運行兩次反向傳播是有用的,例如計算高階梯度。然而,支持雙重反向傳播需要對自動求導(autograd)有一定的理解,并且需要小心處理。支持單次反向傳播的函數不一定能夠支持雙重反向傳播。在本教程中,我們將展示如何編…

MySQL:數據庫基礎

數據庫基礎 1.什么是數據庫&#xff1f;2.為什么要學習數據庫&#xff1f;3.主流的數據庫&#xff08;了解&#xff09;4.服務器&#xff0c;數據庫&#xff0c;表之間的關系5.數據的邏輯存儲6.MYSQL架構7.存儲引擎 1.什么是數據庫&#xff1f; 數據庫(Database,簡稱DB)&#x…

Web Component 教程(五):從 Lit-html 到 LitElement,簡化組件開發

前言 在現代前端開發中&#xff0c;Web 組件是一種非常流行的技術&#xff0c;它允許我們創建可重用的、自包含的 UI 元素。而 Lit-html 是一個簡潔高效庫&#xff0c;用于在 Web 組件中進行渲染。在這篇教程中&#xff0c;我們一步步學習如何 Lit-html 來創建 Web Component。…

【C++】二叉樹和堆的鏈式結構(上)

本篇博客給大家帶來的是用C語言來實現堆鏈式結構和二叉樹的實現&#xff01; &#x1f41f;&#x1f41f;文章專欄&#xff1a;數據結構 &#x1f680;&#x1f680;若有問題評論區下討論&#xff0c;我會及時回答 ??歡迎大家點贊、收藏、分享&#xff01; 今日思想&#xff…

Devops之AWS:如何安裝AWS CLI

AWS 命令行界面&#xff08;AWS CLI&#xff09;是一種開源工具&#xff0c;讓我們能夠使用命令行 Shell 中的命令與 AWS 服務進行交互。 安裝步驟&#xff1a; 下載并運行AWS CLI的MSI安裝程序&#xff1a; 點擊如下的鏈接&#xff0c;即可下載MSI安裝程序&#xff1a; htt…

PH2D數據集: 用人類演示數據提升人形機器人操作能力,助力跨實體學習

2025-03-18, 由加州大學圣地亞哥分校, 卡內基梅隆大學, 華盛頓大學, 麻省理工學院等機構聯合收集了PH2D數據集。該數據集包含26824個任務導向的人類演示&#xff0c;采用消費者級VR設備收集&#xff0c;提供了準確的3D手部關鍵點姿態和語言注釋。數據集覆蓋了多種操作任務、不同…

python 數據可視化matplotib庫安裝與使用

要使用 matplotlib 庫進行數據可視化&#xff0c;首先你需要確保已經安裝了該庫。如果你還沒有安裝&#xff0c;可以通過 Python 的包管理器 pip 來安裝它。在你的命令行工具中運行以下命令來安裝 matplotlib&#xff1a; pip install matplotlib安裝完成后&#xff0c;你就可以…

【MySQL基礎-10】MySQL中的LENGTH()函數:用法詳解與實例分析

在MySQL數據庫中&#xff0c;LENGTH()函數是一個非常常用的字符串函數&#xff0c;用于計算字符串的字節長度。理解并掌握LENGTH()函數的用法&#xff0c;對于處理字符串數據、優化查詢以及進行數據驗證都非常有幫助。本文將詳細介紹LENGTH()函數的用法&#xff0c;并通過實例演…