發表於2024-09-11
這是一本介紹如何使用STM32Cube組件學習STM32微控製器的入門教材,是一個工程師自身學習STM32過程的經驗總結。全書緊緊圍繞《STM32F10xxx參考手冊》,結閤STM32CubeF1軟件包提供的例程進行分析、講解、重新生成,全麵、係統地介紹瞭STM32F103的各個功能項。這是一本教你STM32微控製器具體學習方法的教材。其先從HAL固件庫例程入手,而後結閤STM32參考手冊、數據手冊、ARM Cortex-M3**指南、Cortex-M3編程手冊等ST和ARM兩公司提供的原始資料進行深入、詳細的講解,*後,通過可視化圖形配置工具STM32CubeMX重新生成例程。該方法幾乎可以推廣於STM32微控製器的任何一款芯片,也是經驗豐富的工程師*快瞭解一款芯片的“獨門絕技”。
楊百軍,筆名老楊,曾就職於中航工業集團,主要研究微控製器、微處理器及嵌入式係統的移植與優化,具有豐富的傳感器與檢測技術、生物識彆技術、遠程無綫抄錶技術及鋰電池管理係統(BMS)的開發與教學經驗。
基礎篇
第1章 選擇開發闆
1.1 國外的開發闆
1.2 國內的開發闆
1.3 Nucleo-F103RB開發闆
1.4 思考與練習
第2章 走近STM32
2.1 認識STM32
2.2 STM32與Cortex-M3的關係
2.3 Cortex-M3與ARM
2.4 思考與練習
第3章 認識MDK-ARM
3.1 開發工具介紹
3.2 MDK-ARM的安裝與注冊
3.2.1 MDK-ARM的安裝
3.2.2 注冊MDK-ARM
3.3 從例程入手
3.3.1 瞭解MDK-ARM
3.3.2 例程Blinky
3.4 思考與練習
第4章 初識STM32Cube
4.1 STM32CubeMX
4.2 STM32Cube軟件包
4.3 STM32CubeF1實例
4.4 思考與練習
入門篇
第5章 跑馬燈實驗
5.1 例程GPIO_IOToggle
5.2 分析例程GPIO_IOToggle
5.2.1 解析HAL_Init函數
5.2.2 解析SystemClock_Config函數
5.2.3 解析LED2_GPIO_CLK_ENABLE函數
5.2.4 解析HAL_GPIO_Init函數
5.2.5 為何LED燈能閃爍
5.3 新建例程
5.3.1 重新創建例程
5.3.2 完善例程
5.4 思考與練習
第6章 外部中斷
6.1 例程GPIO_EXTI
6.2 分析例程
6.2.1 分析例程GPIO_EXTI
6.2.2 解析stm32f10x_it.c
6.3 移植例程
6.3.1 創建例程MyEXTI
6.3.2 外部中斷小結
6.3.3 硬件仿真
6.4 思考與練習
第7章 串口通信USART
7.1 有關USART
7.2 例程UART_Printf
7.2.1 使用例程
7.2.2 新建例程MyPrintf
7.2.3 分析例程
7.3 例程ComPolling
7.3.1 例程介紹
7.3.2 分析例程
7.3.3 重建例程
7.4 例程UART_TwoBoards_ComIT
7.4.1 例程介紹
7.4.2 分析例程
7.4.3 重新生成例程
7.4.4 完善工程
7.5 思考與練習
第8章 DMA控製器
8.1 認識DMA控製器
8.2 例程UART_HyperTerminal_DMA
8.2.1 例程介紹
8.2.2 分析例程
8.2.3 重建例程UART_HyperTerminal_DMA
8.3 思考與練習
第9章 完美定時器
9.1 瞭解定時器
9.2 例程TIM_TimeBase
9.2.1 例程介紹
9.2.2 分析例程
9.2.3 重建例程
9.3 例程TIM_DMA
9.3.1 例程介紹
9.3.2 分析例程
9.3.3 重新生成例程
9.4 思考與練習
第10章 模數轉換ADC
10.1 模數轉換器ADC
10.2 例程ADC_Sequencer
10.2.1 例程介紹
10.2.2 分析例程
10.2.3 重建例程
10.3 思考與練習
提高篇
第11章 實時操作係統FreeRTOS
11.1 瞭解操作係統
11.2 例程FreeRTOS_ThreadCreation
11.2.1 例程介紹
11.2.2 分析例程
11.2.3 重建例程
11.2.4 完善例程
11.2.5 擴展例程
11.3 思考與練習
附錄
附錄A 中容量STMF103xB模塊框圖
附錄B 中容量STMF103xB時鍾樹
附錄C STMF103xB存儲器映像
附錄D 圖書資料、網站、開發闆推薦
參考文獻
前言
前兩年在編寫《輕鬆玩轉STM32微控製器》一書時,我就注意到ST公司在主推STM32Cube組件,不過由於自己是從標準外設固件庫(STM32F10x Standard Peripheral Library縮寫SPL)上手的,而且當時網上也有不少對STM32Cube組件的負麵評價,嘗試之後也發現它的一些不完善之處,因而當時還是選擇標準外設固件庫進行編寫的。
然而,隨著這兩年對STM32Cube組件的深入瞭解,以及ST公司對STM32Cube組件的不斷完善,加上自己也慢慢習慣於STM32CubeMX生成C語言工程的便捷,越來越覺得有必要寫一本有關STM32Cube組件的入門書籍。
其實,對一個新事物,大傢總有一個從慢慢瞭解到習慣的過程。開始大傢都是從標準外設庫入門的,而且網上所賣開發闆提供的例程大多也是基於標準外設庫的,因而在學習與工作過程中,人們就慢慢習慣於標準外設庫的開發。其實,在ST公司推齣STM32Cube組件和硬件抽象層固件庫(Hardware Abstracton Layer,HAL)時就招到很多人的質疑和排斥,比較網上所賣開發闆提供的例程你會發現,STM32F1xx係列的開發闆幾乎都是基於標準外設庫開發闆時,清一色提供的都是基於HAL庫的,因為ST公司沒有推齣基於該係列微控製器的SPL庫(至少目前沒有還推齣)。由此可見,學習STM32微控製器,使用HAL庫和STM32Cube組件也是大勢所趨,即使“資深工程師”也在慢慢適應技術的更新。
使用圖形配置工具STM32CubeMX可以快速便捷地生成STM32微控製器的C語言工程框架,開發者隻需在工程中實現自己的應用代碼就可以瞭。然而,這並不是說就不用對STM32微控製器進行學習瞭。在配置STM32CubeMX的過程中你會發現,還有很多STM32微控製器的知識點需要瞭解,纔能有目的地配置,否則也隻能對著該工具無所適從。
說到STM32Cube組件和STM32微控製器的學習,ST公司提供瞭大量的技術資料。有關圖形配置工具STM32CubeMX和STM32CubeF1軟件包,可以重點參考的資料有:
STM32CubeMX for STM32 Configuration and initialization C code generation(STM32CubeMX用戶手冊,UM1718);
Getting started with STM32CubeF1 firmware package for STM32F1 Series(STM32CubeF1用戶手冊,UM1847);
Description of STM32F1xx HAL drivers(HAL庫用戶手冊,UM1850);
STM32Cube firmware examples for STM32F1 Series(STM32Cube應用手冊,AN4724)。
有關STM32微控製器的參考資料就更多瞭,簡單列舉入門學習時需要重點參考的有:
《ARM Cortex-M3權威指南》(宋岩譯);
The Cortex-M3 Technical Reference Manual(Cortex-M3技術參考手冊);
STM32F10xxx Reference manual(STM32F10xxx參考手冊,RM0008);
STM32F10xxx Cortex-M3 Pramming manual(STM32F10xxx Cortex-M3編程手冊,PM0056);
STM32F10xxx Flash programming manual(STM32F10xxx Flash編程手冊,PM0075);
DS5319:STM32F103x8、STM32F103xB Datasheet(數據手冊);
DS5792:STM32F103xC、STM32F103xD、STM32F103xD Datasheet(數據手冊);
MDK-ARM開發環境、例程及幫助文檔;
其他相關器件數據手冊及網絡資料。
學習新知識,沒有資料可以參考時,會覺得很難;資料太多時,會不知所措,不知哪裏應該重點學習,如何纔能快速上手。寫作本書的目的就是結閤ST公司和ARM公司提供的豐富資料,引領讀者找到屬於自己的學習方法。本書從ST的官網入手,指導讀者如何獲取技術資料,然後從STM32CubeF1軟件包提供的例程入手,引導讀者如何利用找到的資料,通過例程慢慢瞭解哪些資料應該在什麼時間段使用。通過例程的功能認識、分析代碼、重新生成,慢慢將例程變為自己的應用實現,在學習的過程中總結技術資料應該如何利用、參考,同時總結齣一套屬於自己的學習方法。
其實,從學習方法上引導讀者學習,本就是我選擇技術寫作這條路的初衷。
《輕鬆玩51單片機》一書是通過簡單的例程,讓單片機入門者有一個輕鬆的入門過程,在快樂中學習,在學習中找到興趣。
《AVR單片機工程師是怎麼煉成的》一書在《輕鬆玩51單片機》中例程的基礎上引入瞭數據手冊(Datasheet)的參考,引導讀者學習嵌入式開發要學會使用數據手冊。
本書和《輕鬆玩轉STM32微控製器》是引導讀者如何通過産品官網獲取技術資料,而後通過例程入手學習如何使用豐富的技術資料。
通過這樣一個颱階一個颱階地學習,希望讀者能夠找到一套自己的學習方法,由開始需要藉助圖書,慢慢學會使用數據手冊,最終可以脫離圖書,直接根據自己的需要找到技術資料,從例程入門學習,然後實現自己應用工程的開發。
入門建議
我還算不上STM32微控製器的資深工程師,隻是早入門瞭兩年而已,因而也不敢在讀者麵前講太多高深的理論。本書隻是告訴讀者如何利用ST公司和ARM公司提供的豐富免費資源快速入門。對於有信心可以自學的讀者,我在此提供一條學習路徑:
先閱讀STM32F10xxx參考手冊的前幾個章節,對STM32有個初步的認識;接下來再閱讀宋岩先生翻譯的《ARM Cortex-M3權威指南》,也不需要看完、吃透,對其內核有個瞭解就可以瞭;然後就可以閱讀STM32CubeMX用戶手冊UM1718和STM32CubeF1用戶手冊UM1847,使用STM32CubeF1軟件包提供的例程,結閤ST公司提供的硬件抽象層固件庫(HAL)的源代碼及其用戶手冊UM1850進行學習;在學習例程時要學會針對例程再去學習STM32F10xxx參考手冊的相關章節。
STM32入門的門檻相對於8位單片機是高瞭些,不過按上麵的路徑入門之後,後麵的路怎麼走,讀者心裏就會清楚許多。本書也正是按照這條路徑來引導讀者使用STM32CubeMX和MDK-ARM學習STM32微控製器的。書中並沒講什麼高深的內容,隻是在例程適當的地方加以注釋,讓新手少走點彎路,輕鬆入門而已。
開發闆選型
目前市麵上的開發闆很多,質量參差不齊,當然是“王婆賣爪,自賣自誇”。其實從主芯片是沒有本質區彆的,不管使用的是L係列、M係列,還是H係列,都不會影響基本內容的學習。也就是說,對於STM32入門,幾乎所有的開發闆都可以滿足要求。它們的區彆是闆上有多少外設,對後期進一步的深入學習會有哪些影響。另外,也要看讀者想在哪方麵進一步深入學習,不一定非要盲目選擇外設豐富的。例如,想學習物聯網、無綫通信,當然要選擇有這些接口、提供豐富例程的開發闆;而如果隻是想低成本入門,那麼選擇一塊幾十元的闆子就足夠瞭。
我也為本書選擇瞭一塊開發闆:ST官方提供的Nucleo-F103RB,當然對於入門學習來說,使用其他開發闆也是完全可以的,本書隻是根據開發闆的原理圖來分析例程,最後使用STM32CubeMX重建例程而已。
緻謝
本書由楊百軍編著,參與本書編寫的還有陳澤慧、陳錦權、段富軍、高維娜、龔欽青、黃得建、康磊、李楠、聶運中、王路、王盛、楊俊傑、張延傑和周宏雲。另外,印舟、劉帥、黃雅琴、史蕊、於維濤、周樂平等也為本書的編寫提供瞭大量的幫助。
“學然後知不足,教然後知睏”,由於作者水平有限,書中難免會齣現一些錯誤,若讀者有疑問或建議,希望能發電子郵件與我溝通。我的電子郵箱:young45@126�眂om,也可通過我的博客young45�眀log�眂hinaunix�眓et來瞭解相關內容。
最後,感謝我的傢人和朋友,特彆是父母,能放任我如此自由地寫作,沒有給我太多的壓力;也感謝洛陽的師長和同事:刁海南、張文勇、郭銳、齊文釗、陳劍、李為民、趙博、尹國利、謝永進等,嵌入式這條路是在工作之後走上的,若沒有這些前輩的指點,也就沒有我的今天;感謝在大學、中學諄諄教導過我的老師:楊明祥、高剋權、楊萬纔、李小申、程東明、張曉紅、黎蔚、王輝、劉勇等,楊明祥老師幫我走進瞭河南科技大學(原洛陽工學院),數理學院的老師為我鋪墊瞭良好的邏輯分析能力,計算機方嚮的老師幫我走進瞭IT行業,由衷地感謝他們的幫助和指引;還有前幾本書的讀者,特彆是那些來信給齣建議的讀者,如郭凱、張鋒、王帥陽、牛鵬舉、竹顯濤、劉帥、宋文帥等,他們的感謝、鼓勵和建議為我繼續寫作增添瞭動力;感謝曾經幫助過我的師長、朋友:郝雲鵬、黃桂平、欽桂勤、段富軍、許元霄、高金龍、申雷等,正是在他們的鼓勵與幫助下,我完成瞭這五本圖書的編寫,在此一並錶示感謝;也感謝電子工業齣版社的王敬棟、張劍、蘇穎傑及其他編輯朋友;最後,感謝人生路上伴我走過的朋友們。
楊百軍
輕鬆玩轉STM32Cube 下載 mobi pdf epub txt 電子書 格式 2024
輕鬆玩轉STM32Cube 下載 mobi epub pdf 電子書講解清晰,實用。
評分快速建立sTM32工程
評分做工精細,很好用,東西很漂亮,包裝精美
評分快速建立sTM32工程
評分工具書使用的,買來學習,嗯
評分入門教程。比較適閤新手。
評分書還不錯,寫的基礎,好評一個。
評分講解清晰,實用。
評分很有用,快遞速度也很快
輕鬆玩轉STM32Cube mobi epub pdf txt 電子書 格式下載 2024