3dwoo大學簡體電腦書店
輕松玩轉STM32微控制器
( 簡體 字)
作者:楊百軍,王學春,黃雅琴類別:1. -> 電腦組織與體系結構 -> 單晶片 -> STM32
出版社:電子工業出版社輕松玩轉STM32微控制器 3dWoo書號: 44927
詢問書籍請說出此書號!
缺書
NT售價: 490
出版日:7/1/2016
頁數:596
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121294891 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第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 書籍、網站等推薦
參考文獻
STM32是意法半導體公司推出的基于ARM Cortex-M3內核的通用型嵌入式微控制器,具有設計靈活、配置豐富、成本低廉、適用性強、性價比高等特點,廣泛應用于工業控制、通信、物聯網、車聯網等領域。正因如此,電子工程師要想在嵌入式控制研發領域安身立命,成為智能電子產品開發的業界翹楚,輕松玩兒轉STM32微控制器是必須的。 本書系統介紹了STM32微控制器的基礎知識和嵌入式系統研發的實戰技巧。全書共24章,分基礎篇、入門篇、提高篇3個層次進行講解,內容豐富、結構清晰、實用性強。

本書在寫作之初本來是準備寫“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這個行業,內心由衷感謝他們的幫助和指引;還有前兩本書的讀者,特別是那些來信給出建議的讀者與學生,如郭凱、張鋒、王帥陽、牛鵬舉、竹顯濤等,他們的感謝、鼓勵和建議為我繼續寫作增添了動力;感謝曾經幫助過我的師長、朋友——郝云鵬、黃桂平、朱錦、段富軍、許元霄、高金龍、申雷等,這些年是在他們的鼓勵與幫助下完成這三本作品的,在此一并表示感謝;也謝謝電子工業出版社的王敬棟、張劍、徐萍及其他編輯朋友。最后,感謝人生路上伴我走過的朋友們。
編著者
pagetop