本書主要內容包括ARM Cortex-M4處理器與STM32F4微控制器簡介、STM32CubeMX、Keil MDK-ARM與STM-Studio開發工具的介紹、通用輸入輸出埠技術、中斷技術、串列通信技術、TFT LCD顯示與觸控控制技術、FATFS檔案系統與SD卡讀寫控制技術。本書附有完整的範例程式與詳盡的實驗步驟,帶領讀者逐步完成微控制器程式的設計撰寫,培養讀者微控制器系統的開發能力。
作者簡介:
張國清
臺灣大學電機工程學博士
現任義守大學資訊工程學系專任副教授。其研究專長為微處理器架構、嵌入式系統、作業系統、物聯網、人工智慧等。曾參與過中華電信多項專案研究計畫,曾榮獲Altera亞洲創新設計大賽卓越指導老師獎,也曾獲得義守大學電機資訊學院傑出教學獎,擁有豐富的實務及教學經驗。
陳延華
義守大學電機研究所博士
目前任職於義守大學資工系專任教授,本書作者從事程式設計領域教學多年,廣泛接觸各種不同背景與程度的學生,對於毫無基礎或不同程度的初學者,學會如何撰寫程式,有獨特見解與教學方法。
柯松源
英國克倫菲爾大學博士
從事嵌入式系統設計與分析的工作多年,對微處理器的架構有深入的研究。專長為數位信號處理、雷達工程。曾帶領學生獲得「全國大專院校嵌入式軟體設計競賽」多媒體應用組的優等獎,也曾獲得國科會自由軟體嵌入式系統計畫類績優計畫獎,擁有豐富的實務及教學經驗。
廖冠雄
清華大學資訊工程學博士
現任義守大學資訊工程學系專任助理教授。其研究專長為無線網路、物聯網、網際網路電信、光波網路等。擁有多年網路相關課程授課經驗,參與過多項物聯網相關磨課師課程教材開發,對嵌入式系統軟體開發也具有相當的實務經驗。
章節試閱
ARM Cortex-M4處理器與STM32F4微控制器簡介
ARM Cortex處理器屬於ARMv7架構,如圖1-1,分為Cortex-A、Cortex-R和Cortex-M三子系列。Cortex-A是一種應用處理器(application processor),它是針對高效能應用平台系統而設計,通常用於行動運算、智慧型手機、高能效伺服器等。Cortex-R是一種即時處理器(real-time processor),其設計強化了即時應用系統的性能與可靠度,適用於硬碟控制器、汽車傳動系統和無線通訊的基頻控制等領域。Cortex-M是一種微控制處理器(microcontroller processor),專門用於嵌入式微控制領城,具有高成本效益比的優勢,通常用於智能電表、穿戴式裝置、汽車與工業控制系統、消費電子產品和物聯網等。
本書選擇一款STMicroelectronics(意法半導體)STM32F412G-DISCO探索板作為開發平台(如圖1-2),此探索板含有STM32F412ZGT6高效能微控制器與豐富的周邊介面,如TFT LCD觸控螢幕、LED、I2S音訊編解碼器、數位MEMS麥克風、搖桿、USB OTG FS、四路SPI快閃記憶體及microSD記憶卡連接器。其中,STM¬32F412ZGT6微控制器(如圖1-3)是基於高性能ARM Cortex-M4F 32位元RISC內核的高效能微控制器,工作頻率高達100 MHz,125 DMIPS性能,Cortex-M4F內核具有單精確度浮點單元(Floating Point Unit, FPU),支援多有ARM單精確度資料處理指令和資料類型,嵌入高速記憶體(1MB快閃記憶體,256 KB SRAM)。此探索板售價在台幣1000元以下,讀者可於以下網站購得。
https://www.mouser.tw/、https://www.digikey.tw/
本章將介紹Cortex-M處理器家族、Cortex-M4F內核的基本結構,以及基於Cortex-M4F內核的高效能STM32F412ZGT6微處理器。
1-1 Cortex-M處理器家族
ARM Cortex-M架構,依照系統功能需求分成M0至M4與M7的等級,Cortex-M0 用於初階8/16位元應用,Cortex-M3針對中階的16/32位元應用,Cortex-M4主打高階32位元與數位信號控制應用,而Cortex-M7是Cortex-M家族最新和最高性能的處理器內核,適合用於旗艦級消費者、工業、醫療和物聯網(IoT)設備。因此,Cortex-M處理器家族包含各式功能的處理器類型來滿足不同的需求:
1-2 ARM Cortex-M4F處理器基本結構
Cortex-M4F處理器是基於ARMv7-M架構的32位元高性能處理器內核,採用三級管線(three-stage pipeline)的哈佛架構,支援Thumb-2技術的指令集,確保高代碼密度和降低程式存儲需求,該處理器提供符合IEEE754的單精確度浮點運算單元、一系列單週期乘加(MAC)指令、單指令多資料(SIMD)指令和飽和運算,以及專用的硬體除法器,大大減少數位信號分析、濾波、波形合成等功能所需要的執行週期數,用以滿足需要高效的控制和數位信號處理(DSP)功能混合的嵌入式微控制器應用的市場。
Cortex-M4F處理器基本結構如圖1-4所示,包含處理器內核、FPU、DSP、巢狀向量中斷控制器( Nested Vectored Interrupt Controller,NVIC)、記憶體保護單元( Memory Protection Unit,MPU )、匯流排介面單元和追蹤除錯單元等。
1-2-1 處理器內核
一、處理器工作模式和軟體執行的特權級別
Cortex-M4F處理器具有兩種工作模式,如圖1-5:
1. 執行緒模式(thread mode)
用於執行應用程式軟體。處理器重置後,進入執行緒模式。
2. 處理器模式(handler mode)
用於處理異常。當處理器完成異常的處理之後返回到執行緒模式。
Cortex-M4F有兩種許可權級別:特權級(privileged)與非特權級(unprivileged)。
ARM Cortex-M4處理器與STM32F4微控制器簡介
ARM Cortex處理器屬於ARMv7架構,如圖1-1,分為Cortex-A、Cortex-R和Cortex-M三子系列。Cortex-A是一種應用處理器(application processor),它是針對高效能應用平台系統而設計,通常用於行動運算、智慧型手機、高能效伺服器等。Cortex-R是一種即時處理器(real-time processor),其設計強化了即時應用系統的性能與可靠度,適用於硬碟控制器、汽車傳動系統和無線通訊的基頻控制等領域。Cortex-M是一種微控制處理器(microcontroller processor),專門用於嵌入式微控制領城,具有高成本效益...
作者序
微控制器應用領域非常廣泛,它是物聯網、工業控制、嵌入式應用、車用電子、智慧醫療、消費性電子與通訊裝置等領域的核心。只要是具有智慧化的資訊電子產品,就一定需要微控制器技術,所以學好微控制器技術非常有用,對未來職涯的發展很有助益。那麼要如何學好微控制器呢?微控制器技術是一門實作的課程,如果僅學習理論知識而不動手操作是很難學會的。所以,學好微控制器技術必須做到理論知識與實驗操作兼顧,邊學邊做,方可達到最佳的學習效果。
本書作者在微控制器系統理論及實務經驗都相當豐富,為帶領讀者進入微控制器之應用領域,將多年教學經驗,花費許多時間,彙編成冊.本書撰寫是以意法半導體的STM32F412G-DISCO探索板為硬體開發平台,利用ST¬M32CubeMX軟體配置微控制器外部周邊,進而生成相應的初始化程式碼,簡化了系統開發的工作,所有應用程式以C語言為基礎來開發,讀者根據本書描述的實驗步驟可輕易上手,並藉此改進和擴充,從而開發出規模更大、效能更佳、更具智慧的微控制器系統。
本書再版主要內容包括ARM Cortex-M4處理器與STM32F4微控制器簡介、 STM32CubeMX、 Keil MDK-ARM與STM-Studio開發工具的介紹、通用輸入輸出埠技術、中斷技術、串列通信技術、TFT LCD顯示與觸控控制技術、FATFS檔案系統與SD卡讀寫控制技術。本書附有完整的範例程式與詳盡的實驗步驟,帶領讀者逐步完成微控制器程式的設計撰寫,培養讀者微控制器系統的開發能力。
本書能夠付梓要感謝五南圖書與協助校正的編輯小組成員。此外,本書涵蓋的內容廣泛,書中錯誤和疏漏之處在所難免,懇請讀者不吝給予指正。
微控制器應用領域非常廣泛,它是物聯網、工業控制、嵌入式應用、車用電子、智慧醫療、消費性電子與通訊裝置等領域的核心。只要是具有智慧化的資訊電子產品,就一定需要微控制器技術,所以學好微控制器技術非常有用,對未來職涯的發展很有助益。那麼要如何學好微控制器呢?微控制器技術是一門實作的課程,如果僅學習理論知識而不動手操作是很難學會的。所以,學好微控制器技術必須做到理論知識與實驗操作兼顧,邊學邊做,方可達到最佳的學習效果。
本書作者在微控制器系統理論及實務經驗都相當豐富,為帶領讀者進入微控制器之應用領域,將...
目錄
第1章 ARM Cortex-M4處理器與STM32F4微控制器簡介
1-1 Cortex-M處理器家族
1-2 ARM Cortex-M4F處理器基本結構
1-3 STM32F412ZGT6微處理器
第2章 STM32F4系列微控制器開發平台與開發工具介紹
2-1 開發平台:STM32F412G-DISCO探索板
2-2 系統需求
2-3 開發工具
第3章 最小軟體系統
3-1 最小軟體系統製作
3-2 開機啟動程式
第4章 通用輸入輸出埠GPIO與LED顯示控制
4-1 GPIO簡介
4-2 GPIO埠基本結構介紹
4-3 LED閃爍的實驗:使用GPIO輸出控制LED顯示
4-4 LED_Blink專案程式碼解說
4-5 BSP函數庫:使用BSP函數控制LED顯示
第5章 JOYSTICK輸入控制
5-1 GPIO輸入模式
5-2 JOYSTICK單鈕控制LED燈(On/Off)
5-3 JOYSTICK多鈕控制LED燈狀態
5-4 使用BSP函數實作多按鈕控制LED燈狀態
第6章 TFT LCD顯示控制
6-1 TFT LCD裝置
6-2 FSMC介面
6-3 利用STM32CubeMX創建TFT LCD專案
6-4 TFT LCD顯示文字的實驗
6-5 TFT LCD顯示棋盤圖案的實驗
6-6 TFT LCD顯示動態圖案的實驗
第7章 基本計時器(Timer)
7-1 基本計時器簡介
7-2 定時中斷控制LED燈閃爍
第8章 外部中斷控制
8-1 外部中斷控制器簡介
8-2 外部中斷控制專案配置與中斷處理程式設計與測試
8-3 JOYSTICK單鈕中斷觸發改變LED燈閃爍速度
8-4 JOYSTICK多按鈕中斷控制LED顯示
第9章 脈波寬度調變控制
9-1 計時器PWM模式
9-2 PWM控制的實驗
第10章 即時時鐘控制
10-1 RTC簡介
10-2 RTC日曆
10-3 RTC鬧鐘
10-4 RTC日曆與鬧鐘功能實驗
第11章 觸控螢幕控制
11-1 觸摸晶片簡介
11-2 I2C介面簡介
11-3 建立觸控螢幕專案
11-4 TFT LCD觸控螢幕控制的實驗
第12章 類比至數位轉換器(ADC)
12-1 逐次逼近型(SAR:Successive Approximation Register)ADC原理
12-2 ADC的主要參數
12-3 STM32F412ZGT6上的ADC
12-4 利用ADC量測MCU內部溫度
第13章 UART通訊界面
13-1 UART簡介
13-2 輪詢式(Polling)UART通訊
13-3 中斷式(Interrupt) UART通訊
13-4 直接記憶體存取式(DMA) UART通訊
第14章 音訊錄製與播放
14-1 原理簡介
14-2 音訊錄製與播放之STM32CubeMX配置
14-3 音訊錄製與播放的軟體設計
第15章 FATFS檔案系統與SD卡讀寫控制
15-1 SD/SDIO MMC卡介面
15-2 FATFS簡介
15-3 利用STM32CubeMX創建SD卡讀寫控制的專案
15-4 SD卡讀寫控制的實驗
第16章 圖像播放器
16-1 利用STM32cubeMX創建圖像播放器
16-2 圖像播放的軟體設計
第1章 ARM Cortex-M4處理器與STM32F4微控制器簡介
1-1 Cortex-M處理器家族
1-2 ARM Cortex-M4F處理器基本結構
1-3 STM32F412ZGT6微處理器
第2章 STM32F4系列微控制器開發平台與開發工具介紹
2-1 開發平台:STM32F412G-DISCO探索板
2-2 系統需求
2-3 開發工具
第3章 最小軟體系統
3-1 最小軟體系統製作
3-2 開機啟動程式
第4章 通用輸入輸出埠GPIO與LED顯示控制
4-1 GPIO簡介
4-2 GPIO埠基本結構介紹
4-3 LED閃爍的實驗:使用GPIO輸出控制LED顯示
4-4 LED_Blink專案程式碼解說
4-...