久久久性爱视频,青娱乐这里只有精品狼牙,在线日韩av资源播放网站,掩去也俺来也久久丁香图

0 賣盤信息
BOM詢價
您現在的位置: 首頁 > 電子資訊 >基礎知識 > stm32f405中文手冊

stm32f405中文手冊

來源:
2025-06-30
類別:基礎知識
eye 1
文章創建人 拍明芯城

前言


STM32F405系列微控制器是意法半導體(STMicroelectronics)基于ARM Cortex-M4內核開發的高性能產品,廣泛應用于工業控制、醫療設備、消費電子等領域。本手冊旨在為工程師和開發者提供一份詳細的中文參考資料,深入解析STM32F405的各項功能、寄存器配置以及編程方法。通過本手冊的學習,讀者將能夠全面掌握STM32F405的開發要點,為實際項目應用打下堅實基礎。我們將著重介紹其核心架構、存儲器組織、時鐘系統、中斷管理、通用I/O以及部分常用外設,力求內容詳盡、易于理解,并提供足夠的細節以滿足實際開發需求。

image.png

第一章 STM32F405概述

1.1 Cortex-M4內核

STM32F405系列微控制器搭載了高性能的ARM Cortex-M4處理器,該內核在Cortex-M3的基礎上增加了單精度浮點運算單元(FPU)和數字信號處理(DSP)指令集,使其在處理復雜算法和信號處理任務時具備顯著優勢。Cortex-M4內核具有哈佛結構,指令和數據總線分離,可以同時進行指令取指和數據訪問,極大地提高了處理效率。此外,其內置的NVIC(嵌套向量中斷控制器)提供了高效的中斷管理機制,支持多個中斷源的優先級配置和嵌套處理,確保系統在實時性要求高的應用中表現出色。內核的低功耗特性也使其適用于對能耗有嚴格要求的嵌入式系統。

1.2 器件特性

STM32F405系列微控制器擁有豐富的片上資源和強大的處理能力。其主頻最高可達168 MHz,提供了充足的運算能力來應對各種復雜的應用場景。片內存儲器包括高達1MB的閃存(Flash)用于程序存儲,以及高達192KB的SRAM用于數據存儲和運行時變量。這些存儲器提供了充足的空間來承載復雜的操作系統、圖形界面和大數據處理任務。

除了強大的處理核心和存儲器,STM32F405還集成了眾多高性能外設,包括多個高速模數轉換器(ADC)、數模轉換器(DAC)、定時器、通用同步/異步收發器(USART)、串行外設接口(SPI)、I2C總線接口、USB OTG全速/高速控制器、以太網MAC、CAN總線等。這些外設為各類應用提供了豐富的數據采集、通信和控制能力。例如,其多達3個12位ADC,支持多通道采樣和交錯模式,可實現高速精確的模擬信號采集;多達2個12位DAC可用于生成模擬信號;多達17個定時器提供了靈活的PWM生成、輸入捕獲和計數功能。廣泛的通信接口使其能夠輕松地與其他設備或網絡進行數據交換。

1.3 引腳和封裝

STM32F405系列提供了多種封裝類型,以適應不同的應用需求,常見的有LQFP64、LQFP100、LQFP144等。不同封裝的引腳數量和可用GPIO資源有所差異。用戶在選擇封裝時需要根據實際項目的引腳需求、PCB板尺寸以及成本等因素進行綜合考量。每個引腳的功能都是可編程的,可以通過配置相應的寄存器來選擇作為通用輸入/輸出(GPIO)、模擬輸入、外部中斷源、或特定外設的功能引腳。理解引腳復用功能是STM32開發中的重要環節,它允許在有限的引腳資源上實現多種功能。

第二章 存儲器和總線

2.1 存儲器映射

STM32F405的存儲器采用統一的線性地址空間,所有片內和片外存儲器以及外設寄存器都被映射到這個地址空間中,用戶可以通過指針訪問任何地址。這種統一的存儲器映射極大地簡化了編程模型。地址空間被劃分為多個區域,每個區域對應不同的功能:例如,閃存區域用于存儲程序代碼和常量數據,SRAM區域用于存儲運行時數據和堆棧,外設寄存器區域用于配置和控制各種片內外設。這種清晰的劃分有助于開發者管理存儲器資源和優化代碼。了解存儲器映射圖對于進行底層編程、優化內存使用以及調試都至關重要。

2.2 閃存(Flash Memory)

閃存是STM32F405用于存儲程序代碼、常量數據以及用戶配置數據的主要非易失性存儲器。其容量根據具體型號有所不同,最高可達1MB。閃存被劃分為多個扇區,每個扇區可以獨立擦除和編程。閃存具有掉電保持數據的特性,確保程序在芯片斷電后不會丟失。STM32F405的閃存控制器提供了讀保護、寫保護和扇區保護等功能,可以有效保護程序的知識產權和數據的安全性。此外,它還支持IAP(在應用編程)和ISP(在系統編程)功能,允許用戶通過軟件或外部編程器對閃存進行更新。

2.3 SRAM(Static Random Access Memory)

SRAM是高速的易失性存儲器,用于存儲程序運行時的數據、變量、堆棧以及DMA緩沖區。STM32F405的SRAM容量最高可達192KB,分為多個區域,包括主SRAM和CCM(Core Coupled Memory)SRAM。CCM SRAM與Cortex-M4內核緊密耦合,具有更低的訪問延遲,適合存放對實時性要求高的代碼段或關鍵數據,以提高程序執行效率。由于SRAM是易失性的,當芯片斷電時,其中存儲的數據將會丟失。因此,對于需要掉電保持的數據,通常會將其存儲在閃存或外部EEPROM中。

2.4 總線結構

STM32F405內部采用了多層AHB(Advanced High-performance Bus)和APB(Advanced Peripheral Bus)總線矩陣結構,實現了CPU、DMA控制器、閃存、SRAM以及各種外設之間的高效并行數據傳輸。這種多層總線架構允許多個主設備(如CPU和DMA)同時訪問不同的從設備(如閃存和SRAM),從而避免了總線沖突,提高了系統整體性能。AHB總線負責高速外設和存儲器的數據傳輸,而APB總線則連接速度相對較慢的外設。這種分層設計優化了總線帶寬的利用率,確保了系統各部分的協調工作。

第三章 時鐘系統

3.1 時鐘源

STM32F405提供了多種靈活的時鐘源,以滿足不同應用對精度、穩定性和功耗的需求。主要時鐘源包括:

  • 高速外部晶體(HSE): 通常連接一個外部晶體振蕩器,提供高精度和高穩定性的時鐘源,是系統主時鐘的理想選擇。HSE可以作為PLL(鎖相環)的輸入,生成更高的系統時鐘頻率。

  • 高速內部RC振蕩器(HSI): 片內RC振蕩器,無需外部元件,啟動時間快,但精度相對較低。適用于對時鐘精度要求不高的應用,或作為HSE失效時的備用時鐘。

  • 低速外部晶體(LSE): 通常連接一個32.768kHz的外部晶體,主要用于實時時鐘(RTC)和低功耗模式下的喚醒功能,提供精確的計時。

  • 低速內部RC振蕩器(LSI): 片內RC振蕩器,頻率較低且精度不高,主要用于獨立看門狗(IWDG)和自動喚醒單元(AWU),提供極低功耗操作。

  • PLL(鎖相環): PLL能夠將低頻時鐘源倍頻到更高的頻率,是生成系統主時鐘(SYSCLK)和USB、SDIO等高速外設時鐘的關鍵。它可以通過配置分頻和倍頻系數,靈活地生成所需頻率。

3.2 時鐘樹

STM32F405的時鐘樹是一個復雜的網絡,它將不同的時鐘源經過分頻、倍頻和多路選擇后,分配給CPU內核、總線以及各個外設。理解時鐘樹的結構和配置對于正確地使能和配置外設至關重要。

  • SYSCLK(系統時鐘): 可以選擇HSE、HSI或PLL作為系統主時鐘源。CPU內核、AHB總線和許多外設都工作在SYSCLK或其分頻后的頻率上。

  • AHB總線時鐘(HCLK): 由SYSCLK經過AHB預分頻器生成,提供給CPU內核、DMA、閃存和SRAM。

  • APB1總線時鐘(PCLK1): 由HCLK經過APB1預分頻器生成,用于連接低速外設,如TIM2-7、UART2-5、SPI2-3、I2C1-3、PWR、DAC等。

  • APB2總線時鐘(PCLK2): 由HCLK經過APB2預分頻器生成,用于連接高速外設,如TIM1、TIM8、USART1、USART6、ADC1-3、SDIO、SPI1等。

正確配置時鐘分頻系數對于確保外設正常工作和達到所需性能至關重要。過高的時鐘頻率可能導致功耗增加和不穩定,而過低的時鐘頻率則會影響系統性能。

3.3 時鐘配置

時鐘配置涉及到操作RCC(Reset and Clock Control)寄存器。開發者需要根據應用需求,選擇合適的時鐘源,配置PLL的輸入源、倍頻系數和分頻系數,然后將生成的SYSCLK分頻到AHB、APB1和APB2總線。通常的配置步驟包括:

  1. 使能選定的時鐘源(HSE/HSI)。

  2. 等待時鐘源穩定。

  3. 配置PLL的各項參數,包括PLL輸入時鐘源、倍頻因子、分頻因子等。

  4. 選擇PLL作為系統時鐘源。

  5. 配置AHB、APB1、APB2總線預分頻器。

  6. 更新系統時鐘變量SystemCoreClock,以便庫函數和用戶代碼能夠正確獲取當前的系統時鐘頻率。

STM32CubeMX等工具可以幫助開發者圖形化配置時鐘,并生成相應的初始化代碼,大大簡化了時鐘配置的復雜性。

第四章 中斷管理

4.1 中斷向量表

中斷向量表是存儲中斷服務程序(ISR)入口地址的表格。當發生中斷時,處理器會根據中斷源的編號查找中斷向量表中對應的地址,然后跳轉到該地址執行中斷服務程序。STM32F405的中斷向量表位于閃存的起始地址(或根據啟動模式配置的偏移地址),包含復位向量、NMI(不可屏蔽中斷)向量、硬故障向量以及所有外設中斷的向量。理解中斷向量表的結構和作用是編寫中斷驅動程序的關鍵。

4.2 NVIC(嵌套向量中斷控制器)

NVIC是Cortex-M內核的一個重要組成部分,負責管理系統中的所有中斷請求。它提供了以下關鍵功能:

  • 中斷使能/禁用: 可以獨立使能或禁用每個中斷源,以控制其是否能夠觸發中斷。

  • 中斷優先級管理: 每個中斷源都可以配置一個優先級,當多個中斷同時發生時,優先級高的中斷將優先得到響應。NVIC支持中斷的搶占和嵌套,即一個高優先級中斷可以打斷一個正在執行的低優先級中斷。

  • 中斷掛起/清除: 可以手動設置或清除中斷掛起狀態,用于軟件觸發中斷或清除已處理的中斷標志。

  • 向量表重映射: 允許將中斷向量表重映射到SRAM,這在需要運行時動態更新中斷向量表時非常有用。

4.3 外部中斷/事件控制器(EXTI)

EXTI是STM32F405特有的一個外設,它允許將GPIO引腳配置為外部中斷或事件的觸發源。EXTI模塊有23條中斷/事件線,其中大部分與GPIO引腳復用。

  • 中斷模式: 當外部信號滿足觸發條件(上升沿、下降沿或雙邊沿)時,EXTI會產生一個中斷請求,并由NVIC處理。

  • 事件模式: 當外部信號滿足觸發條件時,EXTI會產生一個事件脈沖,可以用于觸發其他外設(如定時器、ADC、DMA等),而無需CPU介入,從而降低CPU的負載。

配置EXTI涉及到以下步驟:

  1. 使能相應的GPIO時鐘和EXTI時鐘。

  2. 配置GPIO引腳為輸入模式。

  3. 通過SYSCFG(系統配置控制器)將GPIO引腳映射到EXTI線。

  4. 配置EXTI線的觸發方式(上升沿、下降沿或雙邊沿)。

  5. 使能EXTI線的中斷/事件請求。

  6. 配置NVIC中對應EXTI中斷的優先級并使能。

EXTI廣泛應用于按鍵檢測、傳感器信號采集、外部設備喚醒等場景。

第五章 通用輸入/輸出(GPIO)

5.1 GPIO概述

GPIO(General Purpose Input/Output)是STM32F405最基本也是最重要的外設之一,它允許微控制器通過引腳與外部世界進行交互。STM32F405的GPIO引腳具有高度的靈活性和可配置性,每個GPIO引腳都可以獨立地配置為多種模式,以適應不同的應用需求。GPIO模塊通常通過寄存器進行操作,每個引腳都有一組專用的控制寄存器位。

5.2 GPIO工作模式

STM32F405的每個GPIO引腳都可以配置為以下八種基本工作模式:

  1. 輸入模式(Input Mode):

    • 浮空輸入(Floating Input): 引腳不對信號進行上拉或下拉,適用于連接外部帶有上拉/下拉電阻的設備,或用于模擬信號輸入。

    • 上拉輸入(Pull-up Input): 引腳內部連接一個上拉電阻到VDD,當外部輸入為低電平時,引腳為低;當外部輸入斷開或高阻態時,引腳被上拉到高電平。常用于按鍵檢測等。

    • 下拉輸入(Pull-down Input): 引腳內部連接一個下拉電阻到VSS,當外部輸入為高電平時,引腳為高;當外部輸入斷開或高阻態時,引腳被下拉到低電平。

    • 模擬輸入(Analog Input): 用于連接模擬信號,將引腳配置為模擬輸入模式后,ADC(模數轉換器)可以對該引腳上的電壓進行采樣。

  2. 輸出模式(Output Mode):

    • 開漏輸出(Open-drain Output): 引腳的輸出級只包含一個N溝道MOSFET晶體管連接到VSS,當輸出高電平時,MOSFET關斷,引腳呈高阻態;當輸出低電平時,MOSFET導通,引腳連接到VSS。開漏輸出通常需要外部上拉電阻,可用于I2C總線、電平轉換或連接多個設備的共享總線。

    • 推挽輸出(Push-pull Output): 引腳的輸出級包含一個N溝道MOSFET和一個P溝道MOSFET,當輸出高電平時,P溝道MOSFET導通,N溝道MOSFET關斷;當輸出低電平時,N溝道MOSFET導通,P溝道MOSFET關斷。推挽輸出能夠提供更大的驅動電流,適用于驅動LED、繼電器或數字信號傳輸。

  3. 復用功能模式(Alternate Function Mode):

    • 在這種模式下,GPIO引腳不再作為通用輸入或輸出,而是將其功能分配給片內其他外設,例如USART、SPI、I2C、定時器、ADC等。通過配置相應的AFR(Alternate Function Register)寄存器,可以選擇引腳對應的復用功能。

  4. JTAG/SWD調試模式:

    • 某些特定的GPIO引腳被指定用于JTAG或SWD調試接口。在調試模式下,這些引腳的功能被專用調試電路占用。

除了模式配置,GPIO引腳還可以配置輸出速度(低速、中速、高速、超高速)和鎖存功能。輸出速度決定了引腳電平翻轉的速度,對于高速信號傳輸和降低電磁干擾(EMI)具有重要意義。鎖存功能則可以防止引腳狀態在調試模式下被意外修改。

5.3 GPIO寄存器

GPIO的配置和控制是通過操作一系列專用寄存器來實現的。每個GPIO端口(GPIOA, GPIOB, ..., GPIOI)都有一組獨立的寄存器。以下是一些主要寄存器:

  • MODER(Port mode register): 配置引腳的工作模式(輸入、通用輸出、復用功能、模擬)。

  • OTYPER(Port output type register): 配置輸出模式下的輸出類型(推挽或開漏)。

  • OSPEEDR(Port output speed register): 配置輸出模式下的輸出速度。

  • PUPDR(Port pull-up/pull-down register): 配置輸入模式下的上拉/下拉電阻。

  • IDR(Port input data register): 讀取GPIO引腳的當前輸入狀態。

  • ODR(Port output data register): 設置GPIO引腳的輸出狀態。

  • BSRR(Port bit set/reset register): 原子地設置或清除單個或多個GPIO引腳的輸出狀態,避免讀-改-寫操作帶來的競態問題。

  • LCKR(Port configuration lock register): 鎖存GPIO配置,防止意外修改。

  • AFR(Alternate function low/high register): 配置引腳的復用功能。

通過直接操作這些寄存器,或者使用HAL庫/LL庫提供的API函數,開發者可以實現對GPIO的精確控制。

第六章 定時器(TIM)

6.1 定時器概述

STM32F405系列微控制器集成了多種功能強大的定時器,包括基本定時器、通用定時器和高級控制定時器。這些定時器是實現延時、周期性任務、PWM生成、輸入捕獲、編碼器接口等功能的關鍵。

  • 基本定時器(TIM6/TIM7): 主要用于提供基本的定時功能,沒有外部I/O引腳,不能用于PWM生成或輸入捕獲。它們常用于觸發DAC轉換或作為通用延時。

  • 通用定時器(TIM2/TIM3/TIM4/TIM5/TIM9/TIM10/TIM11/TIM12/TIM13/TIM14): 功能最豐富的定時器,除了基本的定時功能外,還支持PWM輸出、輸入捕獲、輸出比較、單脈沖模式、編碼器接口等。它們通常連接到GPIO引腳,可以生成或捕獲外部信號。

  • 高級控制定時器(TIM1/TIM8): 在通用定時器功能的基礎上,增加了死區生成、互補輸出、剎車輸入等高級特性,特別適合于復雜的電機控制應用。

6.2 通用定時器核心功能

以通用定時器為例,其核心功能包括:

6.2.1 定時模式(Time-base unit)

定時器通過一個內部計數器(CNT)來計數。計數器可以向上計數、向下計數或中心對齊計數。計數器的工作頻率由時鐘源和預分頻器(PSC)決定。當計數器達到自動重載寄存器(ARR)的值時,會產生一個更新事件(Update Event),并可以選擇性地觸發中斷或DMA請求。

  • 計數器(CNT): 存儲當前的計數值。

  • 預分頻器(PSC): 對定時器時鐘源進行分頻,從而控制計數器的計數速度。

  • 自動重載寄存器(ARR): 設定計數器的最大值(或周期),當計數器達到ARR值時,會產生更新事件并可選地復位計數器。

通過配置PSC和ARR,可以精確地控制定時器的周期,從而實現延時或周期性任務。

6.2.2 PWM生成(Pulse Width Modulation)

PWM是一種通過調整方波的占空比來模擬模擬信號的技術。通用定時器通過配置輸出比較模式(Output Compare Mode)來實現PWM輸出。

  • 比較寄存器(CCR): 每個通道都有一個比較寄存器,用于設置PWM的占空比。當計數器值與CCR值匹配時,輸出波形的狀態會發生改變。

  • PWM模式: 定時器支持多種PWM模式,包括PWM模式1和PWM模式2,它們定義了在計數器達到CCR值時,輸出電平的變化方式。

  • 輸出使能: 需要使能相應的通道輸出以及主輸出,才能將PWM波形輸出到GPIO引腳。

通過調整CCR的值,可以在運行時動態地改變PWM的占空比,廣泛應用于電機調速、LED亮度控制、DAC功能模擬等。

6.2.3 輸入捕獲(Input Capture)

輸入捕獲功能用于測量外部信號的脈沖寬度、周期或頻率。當定時器通道的輸入引腳檢測到設定的觸發邊沿(上升沿、下降沿或雙邊沿)時,當前的計數器值會被捕獲到相應的捕獲/比較寄存器(CCR)中,并可選地觸發中斷。

  • 捕獲通道: 每個輸入捕獲通道都對應一個CCR寄存器。

  • 輸入極性: 可配置捕獲觸發的邊沿類型。

  • 輸入預分頻器: 可對輸入信號進行分頻,以捕獲更長的脈沖。

通過捕獲不同邊沿的時間戳,可以計算出外部信號的周期、脈沖寬度等信息,廣泛應用于測頻、測速、超聲波測距等。

6.2.4 輸出比較(Output Compare)

輸出比較功能用于在計數器值與比較寄存器(CCR)值匹配時,改變GPIO引腳的輸出狀態。這可以用于生成單次脈沖、切換引腳狀態或觸發其他外設。與PWM不同的是,輸出比較通常用于生成非周期性的事件。

6.2.5 編碼器接口模式

通用定時器還可以配置為編碼器接口模式,用于解碼正交編碼器的A/B相信號,從而測量旋轉角度和速度。定時器計數器會根據A/B相信號的相位差進行增減計數。

6.3 定時器配置

配置定時器通常涉及以下步驟:

  1. 使能定時器時鐘: 通過RCC寄存器使能相應定時器的時鐘。

  2. 配置時基單元: 設置預分頻器(PSC)和自動重載寄存器(ARR)來確定定時器周期。

  3. 配置功能模式: 根據需求選擇PWM模式、輸入捕獲模式、輸出比較模式等。

  4. 配置通道: 對于PWM、輸入捕獲或輸出比較功能,需要配置相應的通道,包括模式、極性、CCR值等。

  5. 配置GPIO引腳: 將定時器功能映射到相應的GPIO引腳,并配置GPIO為復用功能模式。

  6. 使能定時器: 啟動計數器。

  7. 配置中斷(可選): 如果需要中斷,配置NVIC并使能定時器更新中斷或捕獲/比較中斷。

第七章 模數轉換器(ADC)

7.1 ADC概述

STM32F405集成了多達3個12位精度的模數轉換器(ADC1、ADC2、ADC3),可以將模擬電壓信號轉換為數字量,以便微控制器進行處理。ADC具有多通道、多種轉換模式和靈活的觸發源,廣泛應用于傳感器數據采集、電壓電流測量等場景。每個ADC都可以獨立工作,也可以通過“三路交錯模式”或“雙模”模式實現并行或交替轉換,提高采樣速率。

7.2 ADC主要特性

  • 12位精度: 能夠將模擬信號轉換為4096個離散的數字值(212)。

  • 多達24個外部通道: 可以連接多個外部模擬信號源。

  • 內部通道: 包括片內溫度傳感器、內部參考電壓(VREFINT)和VBAT/2(電池電壓的一半)通道。

  • 轉換模式:

    • 單次轉換模式(Single Conversion Mode): 完成一次轉換后停止。

    • 連續轉換模式(Continuous Conversion Mode): 連續不斷地進行轉換。

    • 掃描模式(Scan Mode): 自動依次轉換多個選定的通道。

    • 間斷模式(Discontinuous Mode): 允許在掃描序列中跳過部分通道。

  • 規則組和注入組:

    • 規則組(Regular Group): 用于常規的ADC轉換,通常由軟件觸發或定時器等外部事件觸發。

    • 注入組(Injected Group): 具有更高的優先級,可以“注入”到規則組的轉換序列中,通常用于緊急或需要快速響應的測量。

  • DMA支持: ADC可以直接通過DMA將轉換結果傳輸到存儲器,減輕CPU的負擔。

  • 觸發源: 轉換可以由軟件觸發,也可以由外部事件(如定時器、EXTI線等)觸發。

  • 數據對齊: 轉換結果可以是左對齊或右對齊。

  • 校準功能: 內置校準電路,以提高轉換精度。

7.3 ADC工作原理

ADC的工作原理主要基于逐次逼近型(SAR)架構。轉換過程大致如下:

  1. 采樣保持: 在轉換開始時,ADC內部的采樣保持電路會在極短的時間內捕獲輸入模擬電壓,并將其保持住。

  2. 量化: 采樣保持的電壓與內部參考電壓進行比較和量化,最終生成一個數字值。

  3. 轉換時間: 整個轉換過程需要一定的時間,這個時間與ADC時鐘頻率和采樣周期(Sample Time)有關。增加采樣周期可以提高轉換精度,但會降低轉換速率。

7.4 ADC配置

配置ADC通常涉及以下步驟:

  1. 使能ADC時鐘和GPIO時鐘: 通過RCC寄存器使能相應ADC模塊和模擬輸入引腳所在端口的時鐘。

  2. 配置GPIO引腳為模擬模式: 將需要進行ADC轉換的GPIO引腳配置為模擬輸入模式。

  3. 復位ADC: 軟件復位ADC模塊,確保其處于初始狀態。

  4. 配置ADC參數:

    • 工作模式: 選擇單次、連續、掃描或間斷模式。

    • 數據對齊: 選擇左對齊或右對齊。

    • 分辨率: STM32F405為12位。

    • 外部觸發源(如果使用): 選擇觸發轉換的外部事件(如定時器輸出、EXTI線)。

  5. 配置規則組/注入組通道:

    • 通道順序: 如果使用掃描模式,需要定義通道的轉換順序。

    • 采樣周期: 為每個通道設置合適的采樣周期。

  6. 使能ADC: 啟動ADC模塊。

  7. 進行校準: 在首次使用ADC或環境變化時,進行ADC校準可以提高轉換精度。

  8. 啟動轉換: 可以通過軟件觸發或等待外部事件觸發轉換。

  9. 讀取轉換結果:

    • 查詢模式: 輪詢ADC狀態寄存器中的EOC(End Of Conversion)標志位,當EOC置位時讀取結果。

    • 中斷模式: 配置并使能ADC中斷,在中斷服務程序中讀取結果。

    • DMA模式: 配置DMA控制器,將ADC轉換結果自動傳輸到存儲器。

正確配置ADC對于獲取準確的模擬數據至關重要,需要注意參考電壓、模擬地線、噪聲抑制等問題。

第八章 串行通信接口(USART)

8.1 USART概述

STM32F405系列微控制器集成了多個通用同步/異步收發器(USART),支持全雙工、同步/異步串行通信。USART是與外部設備進行數據交換最常用的接口之一,廣泛應用于與PC、傳感器、其他微控制器等進行數據通信。USART支持多種工作模式,包括異步模式(UART)、同步模式(SPI主/從)、LIN、IrDA和智能卡模式。

8.2 USART主要特性

  • 全雙工通信: 可以同時發送和接收數據。

  • 靈活的波特率生成: 支持從幾百bps到數Mbps的波特率。

  • 可編程數據字長: 支持7位、8位或9位數據字長。

  • 可編程停止位: 支持0.5、1、1.5或2個停止位。

  • 奇偶校驗控制: 支持偶校驗或奇校驗。

  • 發送/接收緩沖區: 內置發送數據寄存器(TDR)和接收數據寄存器(RDR),實現數據的暫存。

  • 中斷管理: 提供多種中斷源,如發送完成中斷、接收完成中斷、空閑幀中斷、錯誤中斷等。

  • DMA支持: 可以通過DMA實現數據的自動收發,減輕CPU負擔。

  • 多處理器通信模式: 支持多機通信,可識別地址。

  • 同步模式(SPI主/從): 可用于簡單的同步通信。

  • LIN模式: 支持局部互聯網絡(LIN)協議。

  • IrDA模式: 支持紅外數據傳輸。

  • 智能卡模式: 用于與智能卡通信。

8.3 異步模式(UART)工作原理

在異步模式下,USART通過兩個信號線進行通信:

  • TX(發送): 數據輸出線。

  • RX(接收): 數據輸入線。

通信雙方需要預先約定好波特率、數據字長、停止位和奇偶校驗方式。數據以幀的形式傳輸,每幀數據通常包含一個起始位、數據位、可選的奇偶校驗位和一個或多個停止位。

  • 發送過程: 當CPU將數據寫入TDR時,USART會自動將數據按位發送出去,并在發送完成后觸發發送完成中斷。

  • 接收過程: 當USART接收到數據時,會將數據存儲到RDR中,并可選地觸發接收完成中斷。接收過程中也會監測各種錯誤,如幀錯誤、過載錯誤、噪聲錯誤等。

8.4 USART配置

配置USART通常涉及以下步驟:

  1. 使能USART時鐘和GPIO時鐘: 通過RCC寄存器使能相應USART模塊和TX/RX引腳所在端口的時鐘。

  2. 配置GPIO引腳為復用功能模式: 將TX和RX引腳配置為USART的復用功能模式,并選擇正確的AF功能。

  3. 復位USART: 軟件復位USART模塊。

  4. 配置USART參數:

    • 波特率: 根據通信需求計算并設置波特率。

    • 字長: 設置數據位長度(7、8或9位)。

    • 停止位: 設置停止位數量。

    • 奇偶校驗: 選擇無校驗、偶校驗或奇校驗。

    • 收發使能: 使能發送器和接收器。

  5. 配置中斷(可選): 如果需要中斷驅動的收發,使能相應的USART中斷(如接收非空中斷、發送完成中斷)并配置NVIC。

  6. 配置DMA(可選): 如果需要DMA傳輸,配置DMA控制器進行發送和接收。

  7. 使能USART: 啟動USART模塊。

  8. 數據收發:

    • 發送: 將數據寫入USART_DR寄存器(或使用HAL庫的發送函數)。

    • 接收: 從USART_DR寄存器讀取數據(或使用HAL庫的接收函數)。

在進行USART通信時,應注意波特率匹配、信號電平兼容性、以及對數據錯誤的檢查和處理。

第九章 調試與ISP

9.1 調試接口

STM32F405提供了兩種主要的硬件調試接口:

  • JTAG(Joint Test Action Group): 是一種更通用、功能更強大的調試接口,需要多達5個引腳(TMS、TCK、TDI、TDO、TRST)。JTAG不僅可以用于程序調試,還可以用于邊界掃描測試和閃存編程。

  • SWD(Serial Wire Debug): 是一種簡化的兩線調試接口,只需要2個引腳(SWDIO、SWCLK),且功能與JTAG相似,但占用引腳少,更適合引腳資源有限的封裝。

大多數現代STM32開發板都使用SWD接口。通過連接ST-Link、J-Link等調試器,開發者可以使用Keil MDK、STM32CubeIDE等集成開發環境進行在線調試,包括:

  • 單步執行: 逐行執行代碼。

  • 斷點設置: 在特定代碼行設置斷點,當程序執行到斷點時暫停。

  • 變量查看/修改: 實時查看和修改程序中的變量值。

  • 寄存器查看: 查看CPU和外設寄存器的當前狀態。

  • 內存查看: 查看任意內存地址的內容。

  • 實時追蹤: 某些高級調試器支持指令和數據流的實時追蹤。

9.2 啟動模式

STM32F405支持多種啟動模式,通過BOOT0和BOOT1引腳(或內部Flash選項字節)的配置來選擇:

  • 主閃存啟動模式(Main Flash memory): 這是最常用的啟動模式。芯片復位后,從主閃存的0x08000000地址開始執行程序。用戶的應用程序通常燒錄到這個區域。

  • 系統存儲器啟動模式(System memory): 芯片復位后,從內置的系統存儲器(System Memory)開始執行程序。系統存儲器中固化了ST公司提供的Bootloader程序,可以通過UART、USB等接口對主閃存進行編程(ISP,In-System Programming)。這對于在產品生產線或現場進行固件更新非常有用。

  • SRAM啟動模式(SRAM): 芯片復位后,從片內SRAM的起始地址開始執行程序。這主要用于調試目的,可以將程序直接加載到SRAM中運行,以提高下載速度或避免擦寫閃存的限制。

選擇正確的啟動模式對于開發和部署應用程序至關重要。

9.3 ISP(In-System Programming)

ISP允許用戶在產品系統中對微控制器的閃存進行編程,而無需移除芯片。STM32的ISP功能通常通過系統存儲器中固化的Bootloader來實現。

  • 工作流程:

    1. 將BOOT0引腳拉高,BOOT1引腳拉低(對于某些型號可能不同),使芯片進入系統存儲器啟動模式。

    2. 通過UART、USB或其他支持的通信接口,PC端的編程工具(如STM32CubeProgrammer)與Bootloader建立通信。

    3. PC端發送固件數據給Bootloader,Bootloader將數據寫入到主閃存中。

    4. 編程完成后,將BOOT0引腳拉低,復位芯片,程序將從更新后的主閃存啟動。

ISP極大地簡化了固件更新過程,特別適用于量產產品和遠程維護。

9.4 IAP(In-Application Programming)

IAP是指在微控制器運行應用程序的同時,通過應用程序自身來更新閃存中的另一部分程序(通常是應用程序或數據)。

  • 工作原理: IAP通常需要將閃存劃分為兩個或更多區域:一個區域存放Bootloader(或IAP程序本身),另一個區域存放用戶應用程序。Bootloader負責接收新的應用程序數據,并將其寫入到應用程序區域。

  • 應用場景: 允許產品在現場通過網絡(如以太網、Wi-Fi)、USB、或者其他通信接口接收新的固件包,然后由IAP程序實現自更新。這對于實現遠程升級和產品功能擴展非常關鍵。

IAP的實現需要仔細管理閃存擦寫操作,確保在更新過程中數據的完整性和系統的穩定性。通常會采用雙備份或校驗和等機制來提高可靠性。

結語

本手冊詳細介紹了STM32F405系列微控制器的核心特性和主要外設,涵蓋了Cortex-M4內核、存儲器、時鐘系統、中斷、GPIO、定時器、ADC和USART等關鍵模塊。通過對這些內容的深入解析,希望讀者能夠對STM32F405有一個全面而深刻的理解。掌握這些基礎知識是高效開發復雜嵌入式系統的基石。

STM32F405作為一款功能強大且資源豐富的微控制器,其應用潛力是巨大的。除了本手冊中涉及的外設,STM32F405還集成了以太網MAC、CAN、USB OTG、SDIO等更高級的外設,它們能夠支持更復雜的通信協議和數據存儲需求。深入學習這些外設,結合RTOS(實時操作系統)和中間件,將能夠開發出功能更加完善、性能更加優異的產品。

在實際開發中,除了理解硬件特性,高效的開發工具鏈(如STM32CubeIDE、Keil MDK)、成熟的開發庫(HAL庫、LL庫)以及社區資源也是不可或缺的。善用這些資源,將大大提高開發效率并降低開發難度。

希望本手冊能夠成為您在STM32F405開發旅程中的一份寶貴參考。在探索嵌入式世界的道路上,不斷學習和實踐,您將能夠創造出無限可能。

責任編輯:David

【免責聲明】

1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。

2、本文的引用僅供讀者交流學習使用,不涉及商業目的。

3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。

4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。

拍明芯城擁有對此聲明的最終解釋權。

標簽: STM32F405

相關資訊

資訊推薦
云母電容公司_云母電容生產廠商

云母電容公司_云母電容生產廠商

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

拍明芯城微信圖標

各大手機應用商城搜索“拍明芯城”

下載客戶端,隨時隨地買賣元器件!

拍明芯城公眾號
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告