STM32程序設計案例教程 | 生病了怎麼辦 - 2024年8月
![](https://www.books.com.tw/img/CN1/166/20/CN11662013.jpg)
STM32程序設計案例教程
STM32是意法半導體(ST)有限公司推出的基於ARMCortex-M內核的通用型嵌入式微控制器,具有設計靈活、配置豐富、成本低廉、適用性強等特點,廣泛應用於工業控制、通信、物聯網、車聯網等領域。
《STM32程式設計案例教程》系統介紹了STM32程式設計的基礎知識和實戰技巧。
《STM32程式設計案例教程》案例豐富、結構清晰、實用性強。
《STM32程式設計案例教程》可作為高職高專院校電類專業學生的教材使用,也可供相關工程技術人員作為參考用書。
歐啟標,廣東機電職業技術學院教師,副教授,雙師型教師。一直從事單片機和ARM相關專業建設方向的教學和科研工作。
專案1 STM32的開發步驟及STM32的GPIO埠的輸出功能 (1)
任務1-1 控制一顆LED發光二極體閃爍 (1)
1.1 初步認識STM32的GPIO埠的輸出功能 (10)
1.2 寄存器及其位址資訊 (15)
1.3 volatile修飾符的使用及寄存器定義 (17)
習題1 (18)
專案2 認識模組化程式設計 (19)
任務2-1 控制一顆LED發光二極體閃爍 (19)
2.1 模組化程式設計 (24)
2.2 其他C語言注意事項 (25)
2.2.1 用#define和typedef定義類型別名 (25)
2.2.2 一些常見的運算子問題 (25)
2.2.3 檔包含 (26)
2.2.4 關於注釋 (27)
習題2 (28)
專案3 認識STM32的記憶體結構 (29)
任務3-1 LED0閃爍控制 (29)
3.1 記憶體基礎知識 (30)
3.2 Cortex-M4內核和STM32的記憶體結構 (31)
3.2.1 Cortex-M4內核的記憶體結構 (31)
3.2.2 STM32的記憶體結構 (33)
3.2.3 位帶(Bit Band)及位帶別名區(Bit Band Alias)的關係 (37)
3.3 結構體在STM32中的應用 (40)
3.4 通用的I/O埠功能設置函數的設計 (42)
任務3-2 跑馬燈的實現 (44)
習題3 (47)
項目4 精確延時的實現―SysTick 計時器的原理及其應用 (48)
任務4-1 蜂鳴器發聲控制 (48)
4.1 SysTick計時器介紹 (52)
4.2 滴答計時器的延時應用 (55)
習題4 (57)
專案5 機械按鍵的識別――初步認識GPIO埠的輸入功能 (58)
任務5-1 識別機械按鍵的按下與彈起 (58)
5.1 STM32的GPIO埠的資料登錄功能 (65)
5.1.1 GPIO埠位元的資料登錄通道 (65)
5.1.2 GPIO埠位元的輸入配置及上/下拉電阻使能 (66)
5.2 按鍵狀態的判斷 (67)
習題5 (68)
專案6 深入瞭解STM32F407的時鐘系統 (69)
6.1 STM32F4的時鐘系統簡介 (69)
6.2 STM32F4的時鐘系統 (69)
6.3 STM32F4的系統時鐘和各模組時鐘 (72)
6.3.1 系統時鐘SYSCLK (72)
6.3.2 由SYSCLK模組提供時鐘源的時鐘 (73)
6.3.3 RCC模組的相關寄存器及其作用 (75)
習題6 (77)
專案7 認識STM32的串口結構 (78)
任務7-1 使用STM32的串口向PC端發送字串 (78)
7.1 串口基礎知識 (83)
7.2 STM32的串口結構 (84)
7.3 引腳複用 (90)
7.4 埠初始化函數的重新組織 (93)
習題7 (95)
專案8 STM32F407的中斷管理 (96)
任務8-1 使用STM32的外部中斷 (96)
8.1 內嵌中斷向量控制器NVIC對中斷的控制 (102)
8.1.1 STM32的中斷源 (102)
8.1.2 STM32的中斷使能控制 (105)
8.1.3 STM32的中斷優先順序 (106)
8.1.4 中斷函數介面及中斷函數的實現 (112)
8.2 外部中斷 (113)
8.2.1 外部中斷的中斷源 (113)
8.2.2 外部中斷的設置 (114)
習題8 (116)
專案9 認識STM32的計時器 (118)
任務9-1 使用計時器中斷控制LED0的閃爍 (118)
9.1 STM32的計時器概述 (122)
9.2 TIM3內部結構及其計數原理 (122)
9.2.1 TIM3的內部結構 (122)
9.2.2 STM32計時器的定時原理 (124)
9.3 計時器中斷的實現 (127)
9.4 應用計時器產生PWM調製信號 (128)
9.4.1 TIM14的PWM調製原理 (130)
9.4.2 TIM14產生PWM信號涉及的寄存器 (132)
9.4.3 TIM14產生PWM信號的實現流程 (133)
任務9-2 使用TIM14產生週期為500s、占空比為80%的脈衝信號 (134)
習題9 (136)
專案10 認識STM32的獨立看門狗 (137)
任務10-1 認識STM32的獨立看門狗的工作原理 (137)
10.1 看門狗電路概述 (140)
10.2 STM32F407的看門狗電路 (140)
10.3 獨立看門狗相關的寄存器 (141)
10.4 獨立看門狗的設置、啟動及工作流程 (142)
習題10 (143)
專案11 認識STM32F407的即時時鐘 (144)
任務11-1 認識STM32的RTC (144)
11.1 RTC即時時鐘介紹 (149)
11.2 STM32的RTC的工作原理 (149)
11.3 STM32的RTC的操作步驟 (153)
習題11 (155)
專案12 STM32迷你開發板電路設計 (156)
專案13 認識ARM處理器 (161)
13.1 架構簡介 (161)
13.2 Cortex-M4的操作狀態、工作模式和訪問等級 (161)
13.3 數據長度 (162)
13.4 記憶體大小端 (162)
13.5 Cortex-M4的寄存器 (163)
13.6 堆和棧的概念 (166)
13.7 記憶體分配 (167)
習題13 (170)
專案14 組合語言基礎和 Cortex-M4指令集 (172)
14.1 組合語言基礎 (172)
14.2 Cortex-M4的指令集 (174)
14.3 Cortex-M4的偽操作和虛擬指令 (180)
14.3.1 偽操作 (180)
14.3.2 虛擬指令 (186)
習題14 (187)
專案15 認識開機檔案startup_stm32f40_41xxx.s (188)
習題15 (191)
附錄A STM32F407ZGT6的引腳結構與功能 (192)
附錄B STM32F407ZGT6核心電路設計 (203)
附錄C STM32F407ZGT6週邊電路設計 (204)
附錄D 關於編譯資訊的解釋 (205)
參考文獻 (207)
STM32是當前單片機應用領域的主流晶片,在國內Cortex-M市場,STM32市場份額約占45.8%,而ST公司也是中國市場上第二大的通用微控制器廠商。儘管STM32的市場佔有率己如此之高,但在高等職業教育領域,目前學生學習的主流晶片依然是51單片機。原因有很多,其中之一就是STM32模組多,功能多,設計複雜,講解起來相對困難,學習起來也有困難。雖然ST公司為了推廣STM32開發了很多易學易用的工具,但學習者很多時候只會應用而不知道其所以然,遇到問題時經常束手無策,所以編寫一本儘量能夠與51單片機的思路接近,讓學生不排斥而又能帶領學生入門的STM32方面的教材很有必要。
基於此,我們與正點原子(廣州市星翼電子科技有限公司,以下稱“正點原子”)聯合編寫了這本書,書中常式都在正點原子的“探索者”開發板(處理器為STM32F407ZGT6)上運行通過。本書儘量從底層寄存器的控制出發引導讀者慢慢進入STM32的學習,且在學習過程中儘量使讀者在沒有單片機基礎而只有C語言、‘模電、數電基礎的情況下能夠比較流暢地閱讀。
本書主要特點包含以下幾個方面。
1.不需要51單片機基礎即可流暢閱讀
本書編寫的目的之一是代替51單片機的教學,而不是在51單片機的教學基礎上延續,所以書裡面雖然有部分內容涉及51單片機知識,但學起來並不依靠這些知識。本書編寫時假設學生只有C語言、模電、數電基礎,故本書儘量從底層的原理開始講解,以便讀者閱讀和掌握。
2.重在讓學習者知道原理和實現過程
在目前使用STM32進行開發的市場中,大部分開發者可能都是使用庫函數進行開發的,但從入門角度看,可能採用寄存器方式更加合適。掌握了寄存器的使用後再回過來閱讀庫函數的代碼並使用庫函數進行開發更容易一些,但反過來則不一定。因此,書中所有的常式都採用寄存器方式書寫,儘量向讀者介紹實現的原理及過程。
3.由易到難,化繁為簡
介紹函數的實現時儘量先介紹原理,再介紹偽代碼,最後介紹函數的定義。同時,對工程中使用到的新的模組的寄存器組織及訪問方式都進行了詳細的介紹。書中所有的常式(除了系統時鐘的初始化)並不照搬目前已經公開的程式,而是採用儘量簡單的形式來實現,然後再向ST公司或者正點原子的常式過渡。
4.編寫形式直觀生動,內容連貫,可讀性強
每個項目都有教學導航,用於說明每個項目學習的是什麼、需要使用什麼工具以及該如何學習。另外,書中重要的源碼都配有詳細的注釋,方便讀者閱讀。
5.儘量多地介紹各模組的核心應用
為了在有限的篇幅內使讀者對STM32有更多的認識,書中盡可能多地介紹了一些模組,然後對這些模組的核心應用進行詳細的描述,而對模組中不經常用到的功能則由讀者在使用時在已有知識的基礎上進行探索。