STM32學習記錄(一):STM32概述

记录学习的Lyx發表於2024-08-05

STM32F10x系統結構圖

STM32F10x的系統結構圖如下[1]

image

框圖中名詞解釋,按A~Z的順序排列:

  • AHB(Advanced High performance Bus):先進高效能匯流排
  • APB(Advanced Peripheral Bus):先進外設匯流排
  • ADC(Analog-to-Digital Converter):模擬/數字轉換器
  • BKP(Backup registers):備份暫存器
  • CAN(Controller Area Network):控制器區域網
  • DAC(Digital-to-Analog Converter):數字/模擬轉換器
  • DCode (Data Code):資料匯流排
  • DMA(Direct Memory Access):儲存器直接訪問
  • Flash(Flash Memory):快閃記憶體
  • FSMC(Flexible Static Memory Controller):可變靜態儲存控制器
  • GPIO(General-purpose input/output):通用輸入輸出
  • ICode (Insurtcution Code):指令匯流排
  • I2C(Inter-Integrated Circuit):積體電路匯流排
  • IWDG(Independent watchdog):獨立看門狗
  • NVIC(Nested Vectored Interrupt Controller):巢狀向量中斷控制器
  • RCC(Reset Clock Controller):復位時鐘控制器
  • RTC(Real-time clock):實時時鐘
  • System:系統匯流排
  • SRAM(Static Random-Access Memory):靜態隨機存取儲存器
  • SDIO(Secure Digital Input and Output):安全數字輸入和輸出介面
  • SPI(Serial Peripheral Interface):序列外圍裝置介面
  • TIM(Timer):定時器
  • USART(Universal Synchronous Asynchronous Receiver/Transmitter):通用同步非同步收發器
  • USB(Universal Serial Bus):通用序列匯流排
  • WWDG(Window watchdog):視窗看門狗

Cortex-M3處理器內部有3個外設:[2]

  1. Nested vectored interrupt controller(NVIC),巢狀向量中斷控制器(NVIC)是一種支援低延遲中斷處理的嵌入式中斷控制器。
  2. System control block(SCB),系統控制塊(SCB)是處理器的程式設計師模型介面。它提供系統實現資訊和系統控制,包括系統異常的配置、控制和報告。
  3. System timer(SysTick),系統定時器SysTick是一個24位向下計數的定時器。可以用作實時作業系統(RTOS)的滴答計時器或簡單的計數器。

STM32F10x時鐘樹

參考另一篇部落格:https://www.cnblogs.com/qianxiaohan/p/18278597

配置STM32程式設計環境

微控制器型號: STM32F103C8T6

程式設計環境:

​ Keil μVision V5.24.2

​ VS Code 1.92

偵錯程式Debugger: ST-Link V2

程式下載工具:STM32 ST-LINK Utility或Keil整合的程式下載工具

配置Keil環境

  1. 安裝Keil MDK
  2. 安裝晶片支援包,例如STM32F10x系列,雙擊Keil.STM32F1xx_DFP.2.2.0.pack即可安裝
  3. 使用序號產生器pojie軟體

安裝Keil MDK過程可參考:https://www.cnblogs.com/tb-chen/p/18079328

標準庫

Keil 與 VS Code搭配使用

有兩種方式:

  • 安裝外掛Keil Assistant,這個外掛很方便,實際上就是把VS Code當做一個編輯器來用,VS Code的外掛會呼叫Keil,將Keil的輸出結果顯示到VS Code的控制檯。
  • Arm官方提供了VS Code外掛,安裝Arm官方提供的外掛Arm Keil Studio Pack (MDK v6),我沒有測試過。

Keil Assistant外掛的安裝以及使用教程:GitHub - github0null/keil-assistant

需要注意的是,比如要在專案的某資料夾下新增檔案,需要在Keil中使用Manage Project Items選項將檔案新增進專案中再編譯專案,才不會出錯。

建立專案

兩種建立專案的方式:

  • 自己建立一個模板STM32工程模板

  • 使用Keil自帶的Run-Time Environment(RTE) ,新增所需檔案。參考:https://blog.csdn.net/weixin_43764974/article/details/131754334

程式下載

在STM32F10xxx中,有3中引導模式:

image

BOOT1和BOOT0都接低電平,配置為從Flash Memory啟動,網上買的最小系統板預設是從STM32中的Flash Memory中啟動。

將編譯後的程式下載到flash memory中,常見的Debugger有ST-Link,J-Link,CMSIS-DAP等等。ST-Link偵錯程式參考:https://blog.csdn.net/qq_52102933/article/details/126830904,ST-Link也可使用STM32 ST-LINK Utility軟體燒錄HEX檔案到微控制器中。

HAL庫

等待後續更新。。。

資料下載

標準庫官網下載:https://www.st.com.cn/zh/embedded-software/stm32-standard-peripheral-libraries.html

STM32F103系列文件下載:https://www.st.com.cn/zh/microcontrollers-microprocessors/stm32f103/documentation.html

Keil MDK(含序號產生器、支援包)下載:https://pan.baidu.com/s/1l0RHFE2BJziakhdwaNUeUA?pwd=1234 提取碼:1234

keil官網支援包下載:https://www.keil.arm.com/packs/stm32f1xx_dfp-keil/boards/


  1. 《STM32F10x參考手冊》:3.1 System architecture ↩︎

  2. 《Coterx-M3程式設計手冊》:1.3.4 Cortex®-M3 core peripherals ↩︎

相關文章