一、STM32簡介

一、實驗器材介紹

在這里插入圖片描述

二、STM32簡介

1.STM32 名詞解釋

STM32是ST公司基于ARM Cortex-M內核開發的32位微控制器。

  • ST,指ST公司(意法半導體);
  • M,MicroController 微控制器(MCU,MicroController Unit 微控制器單元/單片機);
  • 32,32位的單片機;
    表示CPU一次可以處理32位數據寬度,即4個字節(現在電腦大多數都是64位);
    這也決定了CPU能直接處理的最大內存地址空間是2^32字節(4GB),也意味著32位CPU最多只能利用4GB的RAM,即使物理上安裝了更多的內存,也無法全部訪問;
  • ARM Cortex-M內核,即STM32的內部核心部分(包括CPU),由ARM公司設計的;
    ARM公司設計內核,芯片廠商完善外圍電路,生產芯片。這些芯片,都叫做基于arm內核的芯片;

2.STM32在嵌入式領域的應用

  • 智能車:例如尋跡小車:讀取光電傳感器或者攝像頭的數據,然后驅動電機前進和轉彎;
  • 無人機:讀取陀螺儀加速度計的姿態數據,根據控制算法去控制電機的速度,從而保證飛機穩定飛行;
  • 機器人:驅動舵機來控制機器人的關節,讓機器人運動;
  • 無線通信/物聯網:連接2.4G、藍牙、WiFi、Zigebee、4G等無線通信模塊;
  • 工業控制:PLC,Programmable Logic Controller,可編程邏輯控制器,一種數字運算操作的電子系統,專為工業環境應用而設計。被廣泛應用于制造業和過程工業中,用來自動化控制機械流程和設備;
  • 娛樂電子產品:穿戴電子產品、玩具;
  • STM32功能強大、性能優異、片上資源豐富、功耗低、是一款經典的嵌入式微控制器;

3.STM32系列產品

??????在這里插入圖片描述

4.ARM介紹

  • ARM既指ARM公司,也指ARM處理器內核;
  • ARM公司是全球領先的半導體知識產權(IP,intellectual property,知識產權)提供商,即只設計芯片,不生產芯片。全世界超過95%的智能手機和平板電腦都采用ARM架構;
  • ARM公司設計ARM內核,半導體廠商完善內核周邊電路并生產芯片;
    在這里插入圖片描述
  • ARM系列內核
    在這里插入圖片描述

5.課程使用的STM32(STM32F103C8T6)芯片介紹

  • 參數介紹
    • 系列:STM32F1主流系列;
    • 內核:ARM Cortex-M3內核;
    • 主頻:最大72MHz;
    • RAM(運行內存):20K(實際存儲介質:SRAM);
    • ROM(程序存儲器):64K(實際存儲介質:Flash);
    • 供電電壓:2.0~3.6V(標準3.3V)【注意:USB輸出電壓是5V,不能直接給STM32供電,需要加一個穩壓芯片,把電壓降到3.3V,再給STM32供電】
    • 封裝:LQFP48,共48個引腳,如下圖所示:
      在這里插入圖片描述

6.STM32的片上資源/外設(Peripheral)

(注意:以下外設為STM32F1整個系列的所有外設,并不是所有型號都擁有全部外設,具體型號擁有的外設需要查詢對應的數據手冊)

  • 片上外設的概念
    • 片上外設/片內外設:芯片內部的外設;
    • 片外外設:芯片外部的外設;
      在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

  • NVIC,Nested Vectored Interrupt Controller,嵌套向量中控制器。內核里用于管理中斷的設備,比如配置中斷優先級等。
  • SysTick,系統滴答定時器。主要用來給操作系統提供定時服務的。STM32可以加入Free RTOS、RT-Thread、Ucos等實時操作系統,當加入這些操作系統時就需要SysTick提供定時來進行任務切換的功能。
  • RCC,Reset and Clock Control,復位和時鐘控制。 STM32中其他的外設在上電后默認是不開啟時鐘的,此時操作外設是無效的(這樣能降低功耗,所以在使用外設之前,需要先用RCC開啟對應的時鐘)。
  • GPIO, General-purpose I/O,通用IO(Input/Output,輸入/輸出)。可以用來電燈和讀取按鍵。
  • AFIO,Alternate functions I/O, 復用IO。用來完成復用端口的重定義和中斷端口的配置。
  • EXTI,External Interrupt ,外部中斷。配置好外部中斷后,當引腳的電平按照中斷觸發條件變化時,就會觸發中斷,來讓CPU處理對應的情況。
  • TIM,Timer,定時器。STM32中最常用,功能最多的外設,分為基本定時器、通用定時器和高級定時器三種類型。高級定時器最復雜,通用定時最常用。這兩種定時器都可以完成定時中斷、測頻率、生成PWM波形、配置成專用的編碼器接口等功能。
  • ADC, Analog to Digital Converter,模數轉換器。STM32內置了12位的ADC,可以直接讀取IO口的模擬電壓值,無需外部連接ADC芯片。
  • DMA,Direct Memory Access,直接內存訪問。可以幫助CPU完成搬運大量數據的繁雜任務。
  • USART,Universal Synchronous Asynchronous Receiver Transmitter,通用同步異步收發器。既支持同步串口也支持異步串口,實際中使用異步串口比較多。
  • I2C,Inter-Integrated Circuit,集成電路間通信。實現集成電路(IC/芯片)間以半雙工串行方式通信的設備。
  • SPI,Serial Peripheral Interface,串行外設接口。實現集成電路(IC/芯片)間以全雙工串行方式通信的設備。
  • CAN,Controller Area Network,控制器局域網。一般用于汽車領域。
  • USB,Universal Serial Bus,通用串行總線。可以用該設備做一個模擬鼠標、模擬U盤等設備。
  • RTC,Real Time Clock,實時時鐘。實現年月日、時分秒的計時功能。需要接外部電池,即使掉電也能正常運行。
  • CRC,Cyclic Redundancy Check,循環冗余校驗。一種數據校驗的方式,來判斷數據的正確性。
  • PWR, Power Control, 功率控制。可以讓芯片進入睡眠模式等狀態,來實現省電/低功耗的目的.
  • BKP, Bakup registers,備份寄存器。一段存儲器,當系統掉電時,這段存儲器由備用電池供電,保持數據。
  • IWDG,Independent WatchDog,獨立看門狗。
  • WWDG,Window WatchDog,窗口看門狗。
    當單片機因為程序干擾死機或程序設計不合理出現死循環時,看門狗可以及時復位新芯片,保證系統的穩定。
  • DAC,Digital-to-Analog Converter,數模轉換器。可以在IO口直接輸出模擬電壓。
  • SDIO,Secure digital input/output interface,安全數據輸入/輸出接口,即SD卡接口。可以用來讀取SD卡。
  • FSMC, Flexible static memory controller, 可變靜態存儲控制器。用于擴展內存或配置成其他總線協議,來操作某些硬件。
  • USB OTG,USB On-The-GO,USB主機接口。一種USB接口標準,允許設備在不需要計算機的情況下直接連接和交換數據。即可以讓STM32作為主機去讀取其他USB設備。

7.STM32的命名規則

在這里插入圖片描述

8.STM32系統結構

在這里插入圖片描述

9.STM32F103C8T6引腳定義

在使用一款芯片時,一般需要先著重地看一下其引腳定義。

在這里插入圖片描述

  • 引腳劃分
    • 橙色的是電源相關的引腳:
    • 藍色的是最小系統相關的引腳;
    • 綠色的是IO口、功能口相關的引腳;
  • 表頭介紹
    • 引腳號和引腳名稱:
      與芯片引腳一一對應;
    • 類型:
      S:代表電源;
      I:代表輸入;O:代表輸出;I/O:代表輸入/輸出;
    • I/O口電平:代表IO口所能容忍的電壓;
      有FT(Five Tolerate),代表能容忍5V的電壓;沒有FT,代表只能容忍3.3V電壓;
      如果沒有FT需要接5V的電平,就需要加裝電平轉換電路;
    • 主功能:
      一般就是上電后默認的功能,一般和引腳名稱相同。如果不同的話,引腳的實際功能就
      是主功能,而不是引腳名稱對應的功能。
    • 默認復用功能:
      IO口上同時連接的外設功能引腳:
    • 重定義功能:
      如果兩個都需要使用的功能同時連接在同一個IO口上,可以把其中一個功能重映射到其他的端口上(前提是重定義功能的表里有對應的端口);
  • 具體引腳介紹
    • pin1:VBAT
      備用電池供電引腳。該引腳可以接一個3V的電池,當系統電源斷電時,備用電池可以給內部的RTC時鐘和備份寄存器供電。
    • pin2:PC13-TAMPER_RTC
      • 普通IO口,輸出或讀取對應引腳的高低電平;
      • tamper(篡改)用來做入侵檢測,實現安全保障功能。當產品的安全性要求比較高時,可以在外殼上加一些防拆的觸點,然后把這些觸電接到這個引腳上。如果有人強拆設備,觸點斷開,這個引腳的電平變化,就會觸發STM32的入侵信號,STM32就會清空數據來保證安全。
    • pin3~pin4:PC14-OSC32_IN、PC15-OSC32_OUT
      • 普通IO口:
      • 接32.768KHZ的RTC晶振;(32.768K = 215,內部RTC電路經過215次方分頻,就可以產生1HZ的時間信號了)
    • pin5~pin6:OSC_IN、OSC_OUT
    • 接系統的主時鐘,一般是8MHZ。(芯片內部有鎖相環電路可以對8MHZ的頻率進行倍頻,最終產生72MHZ的頻率,作為系統的主時鐘)
    • pin7:NRST
      系統復位引腳,N代表是低電平復位。
    • pin8~pin9:VSSA、VDDA
      內部模擬部分的供電引腳,比如:ADC,RC振蕩器等。
      VSS是負極,接GND;VDD是正極,接3.3V;
    • pin10~ pin19:PA0~ PA7、PB0~PB1;
      普通IO口;
      其中PA0還兼具了WKUP功能(可以用來喚醒處于待機模式的STM32);
    • pin20、pin44:PB2/BOOT1、BOOT2
      普通IO、BOOT1引腳;
      BOOT2引腳;
      【BOOT引腳用來配置啟動模式】
    • pin21~pin22
      普通IO;
    • pin23、pin24;pin35、pin36;pin47、pin48:VSS_1、VDD_1;VSS_2、VDD_2;VSS_3、VDD_3;
      這些都是系統的主電源口。STM32內部采用了分區供電的方式,在使用時,把VSS接GND,VDD接3.3V即可。
    • pin25~ pin33:PB12~ PB15;PA8 ~PA12;
      普通IO;
    • pin34、pin37~pin40:
      • 普通IO;
      • 調試端口;(默認的主功能都是調試端口,用來調試程序或下載程序)
        • STM32支持SWD和JTAG兩種調試方式。
          • SWD需要兩根線,分別是SWDIO和SWDCLK;
          • JTAG需要5根線,分別是JTMS、JTCK、JTDI、JTDO、NJTRST;
            【教程中使用STLINK來下載和調試程序,STLINK用的是SWD的方式,只需要使用PA13、PA14兩個端口,剩下的PA15、PB3、PB4可以在程序中配置為普通IO口來使用】
    • pin41~ pin43:PB5~PB7
      普通IO;
    • pin45、pin46:PB8~PB9
      普通IO;

10.STM32的啟動配置

啟動配置,即指定程序開始運行的位置,一般程序都是在Flash程序存儲器(主閃存存儲器)開始執行的。
在這里插入圖片描述

  • BOOT1接0(接GND),BOOT0接x(無論BOOT1接什么都可以)
    啟動模式都是主閃存存儲器模式,這時候主閃存存儲器被選為啟動區域,也就是正常的執行Flash閃存里面的程序,這種模式是最常用的模式,一般情況下都是這個配置。
  • BOOT1接0,BOOT0接1(接3.3V)
    啟動模式是系統存儲器模式,這時候系統存儲器被選為啟動區域。這個模式就是用來做
    串口下載用的(系統存儲器中存的是STM32中的一段BootLoader程序,用來接收串口的數據,然后刷新到主閃存中。)
    一般使用串口下載時,就需要配置成該模式。(當把下載SWD和JTAG的調試端口全部配置成IO口時,就不能使用SWD和JTAG的方式下載程序了,此時就需要使用串口來下載程序;如果沒有STLINK和JTLINK,也可以使用串口來下載程序)
  • BOOT1接1,BOOT0接1
    啟動模式是內置SRAM模式,這時候內置RAM被選為啟動區域。這個模式主要用來程序調試的,用的比較少。
    【BOOT引腳的值是在上電復位后的一瞬間有效的,之后就隨便了。】

11.STM32的最小系統

如果要STM32正常工作,就需要把電源部分和最小系統部分的電路連接好。單片機只有一個芯片是無法工作的,需要連接最基本的電路才能正常工作,這個最基本的電路就叫做最小系統電路。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76893.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76893.shtml

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

相關文章

JVM虛擬機篇(一)深入理解JVM:組成部分、運行流程及程序計數器詳解

JVM虛擬機篇(一)深入理解JVM:組成部分、運行流程及程序計數器詳解 JVM虛擬機篇(一)深入理解JVM:組成部分、運行流程及程序計數器詳解一、引言二、JVM的組成部分2.1 類加載子系統2.2 運行時數據區2.3 執行引…

elementui的默認樣式修改

今天用element ui ,做了個消息提示,發現提示的位置總是在上面,如圖: 可是我想讓提示的位置到下面來,該怎么辦? 最后還是看了官方的api 原來有個自定義樣式屬性 customClass 設置下就好了 js代碼 css代碼 效…

游戲引擎學習第204天

回顧并為今天的內容做鋪墊 好,現在開始這一集。今天我們將進行一些用戶界面編程,覺得這是一個展示如何編寫這類代碼的好時機。很多人對如何做用戶界面代碼都很好奇,所以展示一下如何編寫是非常有意義的。 我之所以在現在的這個地方做這些工…

我的世界1.20.1forge模組開發進階教程——TerraBlender

TerraBlender介紹 從模組開發者的視角來看,TerraBlender為Minecraft生物群系類模組的開發提供了全方位的技術支持,顯著降低了開發門檻并提升了模組的質量與擴展性: 跨平臺兼容性架構支持Forge/Fabric/Quilt/NeoForge四大主流加載器,開發者無需為不同平臺單獨適配代碼客戶端…

借助mcpo在open-webui中使用mcp

open-webui前幾天發布了0.6版本,我立即進行了升級。新版本中一個重要功能是通過mcpo方式支持了mcp server。本文將介紹mcpo是什么,以及如何在open-webui中使用它。同時,我也會分享幾個在接入過程中遇到的問題及解決方案。 首先來介紹mcpo&…

安裝gpu版本的dgl

1.先去網址,找到對應版本的dgl,然后下載到本地。 dgl-whl下載地址 我的是python 3.8 ,cuda 11.6. windows 2.在虛擬環境里 輸入 pip install E:\dgl-1.0.2cu116-cp38-cp38-win_amd64.whl (因為我下載到E盤里了) 這樣GPU版本的d…

PyTorch使用(7)-張量常見運算函數

1. 基本數學運算 1.1 平方根和冪運算 import torchx torch.tensor([4.0, 9.0, 16.0])# 平方根 sqrt_x torch.sqrt(x) # tensor([2., 3., 4.])# 平方 square_x torch.square(x) # tensor([16., 81., 256.])# 任意冪次 pow_x torch.pow(x, 3) # tensor([64., 729., 4096…

Nginx功能及應用全解:從負載均衡到反向代理的全面剖析

Nginx作為一款開源的高性能HTTP服務器和反向代理服務器,憑借其高效的資源利用率和靈活的配置方式,已成為互聯網領域中最受歡迎的Web服務器之一。無論是作為HTTP服務器、負載均衡器,還是作為反向代理和緩存服務器,Nginx的多種功能廣…

安徽京準:NTP時間同步服務器操作使用說明

安徽京準:NTP時間同步服務器操作使用說明 3.1 連接天線 天線連接到“ANT”口。 3.2 連接電源 將220V電源線連到AC220V座上或將電源適配器(7.5V~12V)接到DC口上。也可以同時接上,提高供電可靠性。 3.3 LAN網口 網線連接到NTP…

Java項目之基于ssm的懷舊唱片售賣系統(源碼+文檔)

項目簡介 懷舊唱片售賣系統實現了以下功能: 用戶信息管理: 用戶信息新增:添加新用戶的信息。 用戶信息修改:對現有用戶信息進行修改。 商品信息管理: 商品信息添加:增加新的商品(唱片&#x…

基于 Python 的自然語言處理系列(70):檢索增強生成(RAG)

1. 什么是 RAG? 在許多大模型(LLM)應用場景中,我們需要使用特定的用戶數據,而這些數據并未包含在模型的訓練集中。檢索增強生成(Retrieval Augmented Generation,RAG)是一種有效的解…

CAD插件實現:所有文字顯示到列表、縮放、編輯——CAD-c#二次開發

當圖中有大量文字,需要全部顯示到一個列表時并縮放到需要的文字時,可采用插件實現,效果如下: 附部分代碼如下: private void BtnSelectText_Click(object sender, EventArgs e){var doc Application.DocumentManager.…

Systemd構建自動化備份服務與外部存儲管理

實訓背景 你是一家數據公司的系統管理員,需設計一套自動化備份系統,滿足以下需求: 定期備份:每周日凌晨1點將 /data 目錄壓縮備份到 /backups。外部存儲掛載:插入USB設備時自動掛載到 /mnt/usb,并觸發增量…

PostgreSQL中根據另一表的值來更新一個字段

UPDATE table1 SET value t2.new_value FROM table2 t2 WHERE table1.id t2.reference_id; 解釋 UPDATE table1:指定要更新的表,不要用別名。 SET value t2.new_value:設置要更新的字段及其新值,這里新值來自 table2。也可更…

#SVA語法滴水穿石# (000)斷言基本概念和背景

一、前言 隨著數字電路規模越來越大、設計越來越復雜,使得對設計的功能驗證越來越重要。首先,我們要明白為什么要對設計進行驗證?驗證有什么作用?例如,在用FPGA進行設計時,我們并不能確保設計出來的東西沒有功能上的漏洞,因此在設計后我們都會對其進行驗證仿真。換句話說…

Git 從入門到精通(開源協作特別版)

🧠 Git 從入門到精通(開源協作特別版) ? 基礎命令 🧰 高級用法 🛠? 開源實戰技巧 🌍 GitHub 社區協作 適合:從0開始 → 熟練開發者 → 參與/維護開源項目 🔰 第1章:…

【SQL】取消sql某一列的唯一值key值的方法

在插入數據到sql時,遇到了這個問題: Duplicate entry ‘XXX’ for key 起因是: 我之前設計表的時候,手動給product_title 這個列加了一個key, key 是這個字段的唯一鍵約束,就不能重復在這一列存入重復的數…

【小沐學Web3D】three.js 加載三維模型(React Three Fiber)

文章目錄 1、簡介1.1 Three.js1.2 React Three Fiber 2、測試2.1 初始化環境2.2 app.js修改(顯示內置立方體)2.3 app.js修改(顯示內置球體)2.4 app.js修改(顯示自定義立方體)2.5 app.js修改(顯示…

本地部署 Firecrawl 爬蟲讓 AI 知識庫更豐滿

https://www.firecrawl.dev/ firecrawl-logo-with-fire.png 什么是Firecrawl Firecrawl 是一款 可以將網站轉換為 便于AI處理的Markdown 格式的爬蟲工具 ,主要 提供 API 服務 ,無需站點地圖,只需要接收一個 URL 地址就可以爬取網站及網站下可…

純個人整理,藍橋杯使用的算法模板day2(0-1背包問題),手打個人理解注釋,超全面,且均已驗證成功(附帶詳細手寫“模擬流程圖”,全網首個

算法索引 01背包優化前空間優化版(使用一維數組)優化后的模擬流程圖為何優化后,j不能使用正序遍歷模擬流程圖 代碼對應實現案例 01背包 優化前 /*** 0-1背包問題解法(與下方代碼表格示例對應,已模擬驗證)*…