STM32F10x系統結構圖
STM32F10x的系統結構圖如下[1]:
框圖中名詞解釋,按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]
- Nested vectored interrupt controller(NVIC),巢狀向量中斷控制器(NVIC)是一種支援低延遲中斷處理的嵌入式中斷控制器。
- System control block(SCB),系統控制塊(SCB)是處理器的程式設計師模型介面。它提供系統實現資訊和系統控制,包括系統異常的配置、控制和報告。
- 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環境
- 安裝Keil MDK
- 安裝晶片支援包,例如STM32F10x系列,雙擊
Keil.STM32F1xx_DFP.2.2.0.pack
即可安裝 - 使用序號產生器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中引導模式:
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/
《STM32F10x參考手冊》:3.1 System architecture ↩︎
《Coterx-M3程式設計手冊》:1.3.4 Cortex®-M3 core peripherals ↩︎