發表於2024-11-25
輕鬆玩轉STM32微控製器 pdf epub mobi txt 電子書 下載
STM32是意法半導體公司推齣的基於ARM Cortex-M3內核的通用型嵌入式微控製器,具有設計靈活、配置豐富、成本低廉、適用性強、***高等特點,廣泛應用於工業控製、通信、物聯網、車聯網等領域。正因如此,電子工程師要想在嵌入式控製研發領域安身立命,成為智能電子産品開發的業界翹楚,輕鬆玩兒轉STM32微控製器是必須的。 本書係統介紹瞭STM32微控製器的基礎知識和嵌入式係統研發的實戰技巧。全書共24章,分基礎篇、入門篇、提高篇3個層次進行講解,內容豐富、結構清晰、實用性強。
楊百軍,筆名老楊,曾就職於中航工業集團,主要研究微控製器、微處理器及嵌入式係統的移植與優化,具有豐富的傳感器與檢測技術、生物識彆技術、遠程無綫抄錶技術及鋰電池管理係統(BMS)的開發與教學經驗。
第1篇基礎篇
第1章 選擇開發闆
1.1 開發闆簡介
1.2 開發闆功能簡介
第2章 走近STM32
2.1 認識STM32
2.2 STM32與Cortex-M3的關係
2.3 Cortex-M3與ARM
第3章 認識MDK-ARM
3.1 開發工具介紹
3.2 安裝MDK-ARM
3.3 從例程入手
第4章 初識固件庫
4.1 固件庫的獲取
4.2 固件庫實例
4.3 MISRA及代碼規範
4.3.1 MISRA-C 2004標準
4.3.2 代碼規範與慣例
4.4 CMSIS標準
第2篇 入門篇
第5章 跑馬燈實驗
5.1 例程IOToggle
5.2 分析例程IOToggle
5.3 修改例程
5.4 下載程序
5.5 完善跑馬燈
5.6 寄存器編程
第6章 按鍵輸入
6.1 由跑馬燈說起
6.2 實現I/O口的輸入模式
6.3 軟件仿真
6.4 寄存器操作
第7章 外部中斷
7.1 例程EXTI_Config
7.2 分析例程EXTI_Config
7.3 移植例程
7.4 硬件仿真
第8章 串口通信USART
8.1 有關USART
8.2 例程Printf
8.3 例程Polling
8.4 例程HyperTerminal_Interrupt
第9章 係統節拍時鍾SysTick
9.1 瞭解SysTick
9.2 例程TimeBase
第10章 忠實的看門狗
10.1 獨立看門狗IWDG
10.2 例程IWDG_Reset
10.3 窗口看門狗WWDG
10.4 例程WWDG_Reset
第11章 完美定時器
11.1 瞭解定時器
11.2 例程OCActive
11.3 例程PWM_Output
11.4 例程Parallel_Synchro
第12章 實時時鍾RTC與備份寄存器BKP
12.1 備份寄存器BKP
12.2 例程Backup_Data
12.3 實時時鍾RTC
12.4 例程Calendar
第13章 電源控製PWR與循環冗餘校驗CRC
13.1 電源控製PWR
13.2 例程STANDBY
13.3 循環冗餘校驗CRC
13.4 例程CRC_Calculation
第14章 嵌套嚮量中斷控製器NVIC
14.1 瞭解NVIC
14.2 例程IRQ_Priority
14.3 例程IRQ_Mask
第15章 Cortex-M3特性之Bit-band
15.1 瞭解Bit-band
15.2 例程BitBand
15.3 操作模式和特權級彆
15.4 例程Mode_Privilege
第16章 模數轉換器ADC與數模轉換器DAC
16.1 模擬數字轉換器ADC
16.2 例程ADC1_DMA
16.3 例程TIMTrigger_AutoInjection
16.4 數字模擬轉換器DAC
16.5 例程TwoChannels_TriangleWave
第17章 DMA控製器與時鍾控製器RCC
17.1 DMA控製器
17.2 例程ADC_TIM1
17.3 時鍾控製器RCC
17.4 例程RCC_ClockConfig
第3篇 提高篇
第18章 I2C總綫
18.1 瞭解I2C
18.2 STM32的I2C接口
18.3 例程EEPROM
第19章 SPI總綫
19.1 瞭解SPI
19.2 STM32的SPI接口
19.3 例程SPI_FLASH
第20章 I2S總綫
20.1 瞭解I2S
20.2 STM32的I2S接口
20.3 例程Interrupt
第21章 CAN總綫
21.1 瞭解CAN
21.2 STM32的CAN接口
21.3 例程LoopBack
第22章 SDIO接口
22.1 SDIO初探
22.2 STM32的SDIO模塊
22.3 例程uSDCard
第23章 靜態存儲控製器FSMC
23.1 STM32之FSMC
23.2 例程SRAM
第24章 STM32內部Flash
24.1 認識STM32內部Flash
24.2 例程Program
附錄A 修改例程的LED驅動
附錄B 在例程中添加USART驅動
附錄C STMF103xCDE模塊框圖
附錄D STMF103xCDE時鍾樹
附錄E STMF103xCDE存儲器映像
附錄F 啓動文件分析
附錄G 書籍、網站等推薦
參考文獻
本書在寫作之初本來是準備寫“ARM-Linux”相關的嵌入式係統教材的,然而計劃趕不上變化,技術的更新日新月異,因此後來決定隨市場而動寫STM32微控製器相關的內容。原本筆者認為STM32是不需要教材指導的,因為ST和ARM兩傢公司已經提供瞭豐富的資料:
《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)
DS5792:STM32F103xC、STM32F103xD、STM32F103xD Datasheet(數據手冊)
STM32F10x_StdPeriph_Driver_3��5��0(含中文版使用手冊)
MDK-ARM開發環境、其例程及幫助文檔
其他相關器件數據手冊及網絡資料
其中,STM32F10x_StdPeriph_Driver既有庫函數源代碼,又有豐富的實例,再加上其使用手冊,足夠一個有經驗的8/16位單片機工程師嚮STM32轉型瞭。
但是後來發現,對於一個熟練掌握瞭單片機程序設計技巧的工程師而言,利用這些內容入門是沒有問題的;可是對於一個隻學瞭C語言的學生或在8位單片機的路上跌跌撞撞走過來的入門者,隻利用這些內容學習,睏難還是不小的。因為,STM32F10xxx係列的參考手冊(RM0008)是學習ST微控製器最全麵的一份文檔,但該文檔是將小容量、中容量、大容量,甚至網絡型産品揉在一起講解的;雖然大容量、中容量、小容量、網絡型産品也都有各自的數據手冊(Datasheet),但又相對簡單得多,隻能用來參考選型及瞭解具體參數。而且其內核又是另一傢公司(ARM)設計的,這樣要瞭解內核,又要去學習Cortex-M3以及ARMv7的相關知識。另外,STM32F10xxx是32位微控製器,其內部集成瞭豐富的外設、中斷控製係統、時鍾係統、總綫係統等,這些對初學者而言都是一個難以跨越的門檻。
筆者還算不上STM32微控製器的資深工程師,隻是早入門瞭兩年而已,因而也不敢在讀者麵前講太多高深的理論,本書隻是想告訴讀者怎麼能夠利用這些免費的資源快速入門。對於有信心可以自學的讀者,在此筆者嚮你提供一個學習大綱:
先看看《STM32F10xxx參考手冊》的前麵幾章,對STM32有一個初步的認識;接下來再讀一讀宋岩先生翻譯的《ARM Cortex-M3權威指南》,也不需要看完、吃透,對其內核有個瞭解就可以瞭;然後就可以使用MDK-ARM提供的例子程序和幫助文檔,結閤ST公司提供的固件庫(STM32F10x_StdPeriph_Driver)的源代碼及其使用手冊進行學習瞭。在學習例子程序時,要學會針對例子程序再去學習《STM32F10xxx參考手冊》的相關章節。
STM32入門的門檻相對8位單片機是高瞭些,不過根據上麵的流程入門之後,接下來的路怎麼走,你心裏就會清楚許多。本書也正是根據上麵的流程來引導讀者學習STM32的,沒有什麼高深的東西,隻是在適當的地方加以注釋,讓新手少走點彎路,輕鬆入門而已。
入門建議
雖然這是一本介紹STM32入門的書籍,但我還是建議讀者最好選擇8位單片機作為自己走進單片機世界的鑰匙。因為越是復雜的東西,越是難以吃透、門檻越高,容易打擊學習的積極性。但是8位單片機就相對簡單得多,像51單片機若是選對一本教材,用一周至一個月的時間就可以入門;AVR單片機結閤其數據手冊,大概一個月也能夠入門。
另外,學習STM32對使用者的C語言基礎的要求也比較高。學習8位單片機,讀過譚浩強老師的《C語言程序設計》,掌握其中前半本的知識點就可以入門瞭。但STM32的例程用到的知識點就多瞭:指針、結構體、條件編譯、文件操作,等等,一些相對有難度的C語言知識都要用到。對於C語言基礎不是太好的讀者,還是建議手邊有本C語言教材,這樣有不理解的地方,可以找到相應的知識點復習一下。
目前市麵上的教材可以分為兩類:一類是基於固件庫函數講解的,這類的教材多些;另一類是基於寄存器講解的。通常基於庫函數講解的會說這樣可以快速上手、移植方便等;基於寄存器的會說講解深入、代碼效率較高。筆者並不覺得誰優誰劣,首先要真正學會操作STM32不管是用其固件庫函數,還是直接操作寄存器,都要對其深入瞭解,然後纔能靈活應用;而且庫函數提供的有源代碼,深入學習之後,可以根據源代碼寫自己的程序,也可以直接修改源代碼。因而不存在誰優誰劣的問題,區彆隻是教材是如何引導讀者入門的,而讀者希望選擇哪條路走進STM32的世界。
開發闆選型
目前市麵上的開發闆很多,參差不齊,有不少是王婆賣瓜、自賣自誇。這個要看讀者的喜好,其實從主芯片的選擇來說,它們是沒有本質區彆的。不管使用的是L係列、M係列,還是H係列,都不會影響基本內容的學習,也就是說對於STM32入門來說,幾乎所有的開發闆都可以滿足要求。它們的區彆是闆上有多少外設,對我們後期進一步深入的學習會有哪些影響。另外,也要看讀者想在哪方麵進一步深入學習,不一定非要盲目選擇外設豐富的。例如,想學習物聯網、無綫通信,當然要選擇有這些接口、提供豐富例程的開發闆;而如果想低成本入門,那麼選擇一塊幾十塊錢的闆子就夠瞭。
筆者也為本書選擇瞭一塊開發闆:秉火ISO STM32。不過對於入門學習來說,使用其他的開發闆也是完全可以的,因為筆者也是將例程在上麵根據其原理圖移植而已。
緻謝
全書由楊百軍統稿,並參與第19~24章的具體編寫;黃河科技學院王學春老師主要參與完成第1、2、3、4、5、6章的編寫,河南省輕工業學校黃雅琴老師主要參與完成第10、11、12、13、14章的編寫,河南大學史蕊老師主要參與完成第7、8、9章的編寫,中國人民解放軍國防科學技術大學張誌洲老師主要參與完成第15、16、17、18章的編寫。此外,參與本書編寫的還有陳澤慧、高維娜、黃得建、康磊、李楠、聶運中、王路、楊俊傑、張延傑、周宏雲等。另外,東莞秉火網絡科技有限公司(火哥)為本書的編寫提供瞭秉火ISO STM32開發闆,在此錶示感謝。
“學然後知不足,教然後知睏”,由於作者水平有限,在寫作的過程中難免會齣現一些錯誤。若讀者有什麼疑問或建議,希望能發郵件與作者溝通,郵箱是young45@126.com,也可通過老楊的博客young45.cublog.cn來瞭解相關內容。另外,還可以登錄野火開源社區www.chuxue123.com,直接與火哥交流。
最後,感覺我的傢人和朋友,特彆是父母能在社會壓力較大的今天放任我如此自由地寫作,不給他們的兒子那麼多的壓力;也感謝在洛陽時的師長和同事——刁海南、張文勇、郭銳、齊文釗、陳劍、李為民、趙博、尹國利、謝永進等,嵌入式這條路是在工作之後走上的,若不是這些前輩的指點,就沒有我的今天;感謝那些在大學、中學諄諄教導過我的老師——楊明祥老師、高剋權老師、楊萬纔老師、李小申老師、程東明老師、張曉紅老師、黎蔚老師、王輝老師、劉勇老師等,楊明祥老師幫我走進瞭洛工,洛工數理學院的老師為我鋪墊瞭良好的邏輯分析能力,計算機方嚮的老師幫我走進瞭IT這個行業,內心由衷感謝他們的幫助和指引;還有前兩本書的讀者,特彆是那些來信給齣建議的讀者與學生,如郭凱、張鋒、王帥陽、牛鵬舉、竹顯濤等,他們的感謝、鼓勵和建議為我繼續寫作增添瞭動力;感謝曾經幫助過我的師長、朋友——郝雲鵬、黃桂平、硃錦、段富軍、許元霄、高金龍、申雷等,這些年是在他們的鼓勵與幫助下完成這三本作品的,在此一並錶示感謝;也謝謝電子工業齣版社的王敬棟、張劍、徐萍及其他編輯朋友。最後,感謝人生路上伴我走過的朋友們。
編著者
給快遞哥們點贊,態度服務一流,很好很強大。
評分給快遞哥們點贊,態度服務一流,很好很強大。
評分給快遞哥們點贊,態度服務一流,很好很強大。
評分給快遞哥們點贊,態度服務一流,很好很強大。
評分給快遞哥們點贊,態度服務一流,很好很強大。
評分給快遞哥們點贊,態度服務一流,很好很強大。
評分好好
評分好好
評分好好
輕鬆玩轉STM32微控製器 pdf epub mobi txt 電子書 下載