本書主要內容包括ARM Cortex-M4F處理器與STM32L4微控制器簡介、STM32CubeMX、Keil MDK-ARM與STM-Studio開發工具的介紹、通用輸入輸出埠技術、中斷技術、脈波寬度調變技術、即時時鐘控制技術、A/D與D/A控制技術、串列通信技術、慣性感測器(陀螺儀、加速度計、指南針)技術。本書附有完整的範例程式與詳盡的實驗步驟,帶領讀者逐步完成微控制器程式的設計撰寫,培養讀者微控制器系統的開發能力。
作者簡介:
張國清
臺灣大學電機工程學博士
現任義守大學資訊工程學系專任副教授。其研究專長為微處理器架構、嵌入式系統、作業系統、物聯網、人工智慧等。曾參與過中華電信多項專案研究計畫,曾榮獲Altera亞洲創新設計大賽卓越指導老師獎,也曾獲得義守大學電機資訊學院傑出教學獎,擁有豐富的實務及教學經驗。
陳延華
義守大學電機研究所博士
目前任職於義守大學資工系專任教授,本書作者從事程式設計領域教學多年,廣泛接觸各種不同背景與程度的學生,對於毫無基礎或不同程度的初學者,學會如何撰寫程式,有獨特見解與教學方法。
柯松源
英國克倫菲爾大學博士
從事嵌入式系統設計與分析的工作多年,對微處理器的架構有深入的研究。專長為數位信號處理,雷達工程。曾帶領學生獲得「全國大專院校嵌入式軟體設計競賽」多媒體應用組的優等獎,也曾獲得國科會自由軟體嵌入式系統計畫類績優計畫獎,擁有豐富的實務及教學經驗。
廖冠雄
清華大學資訊工程學博士
現任義守大學資訊工程學系專任助理教授。其研究專長為無線網路、物聯網、網際網路電信、光波網路等。擁有多年網路相關課程授課經驗,參與過多項物聯網相關磨課師課程教材開發,對嵌入式系統軟體開發也具有相當的實務經驗。
章節試閱
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(義法半導體)STM32L476G-DISCO探索板作為開發平台(如圖1-2),此探索板含有STM32L476VG超低功耗微控制器與豐富的周邊介面,如LCD顯示器、LED、音訊DAC、麥克風、慣性感測器(陀螺儀、加速度計、指南針)、搖桿、USB OTG及四路SPI快閃記憶體。其中,STM32L476VGT6微控制器(如圖1-3)是基於高性能ARM Cortex-M4F 32位元RISC內核的超低功耗微控制器,工作頻率高達80 MHz,100 DMIPS性能,Cortex-M4F內核具有單精確度浮點單元(floating point unit, FPU),支援多有ARM單精確度資料處理指令和資料類型,嵌入高速記憶體(1MB快閃記憶體,128KB SRAM)。此探索板售價在臺幣1000元以下,讀者可於以下網站購得。
https://www.mouser.tw/、https://www.digikey.tw/
本章將介紹Cortex-M處理器家族、Cortex-M4F內核的基本結構,以及基於Cortex-M4F內核的超低功耗STM32L476VG系列的微處理器。
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處理器家族包含各式功能的處理器類型來滿足不同的需求。
Cortex-M處理器 特性描述
Cortex-M0 用於低成本,超低功耗的微控制器和深度嵌入式應用的處理器。
Cortex-M0+ 針對小型嵌入式系統的最高能效的處理器,與Cortex-M0處理器接近的尺寸大小和架構,但有額外擴展的功能,如單週期I/O介面和向量表重定位功能。
Cortex-M1 專為FPGA中的實現設計的ARM處理器,與Cortex-M0有相同的指令集。
Cortex-M3 針對低功耗微控制器設計的處理器,採用哈佛結構,指令匯流排和資料匯流排分開,指令與資料可並行存取,三級Pipeline,且增加了分支預測功能,大部分指令皆可依週期完成,具有硬體除法器和乘加指令(MAC)。
Cortex-M4 具備Cortex-M3的所有功能,並且增加數位信號處理(DSP)的指令集,如單指令多資料指令(SIMD)和更快的單週期MAC操作。此外,它還有一個可選的支持IEEE754浮點標準的單精確度浮點運算單元。
Cortex-M7 針對高階微控制器和數位訊號處理的應用開發的高性能處理器。具備Cortex-M4支持的所有指令功能,擴展支持雙精確度浮點運算與記憶體的功能,例如Cache和緊耦合記憶體(TCM)。
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)、匯流排介面單元和追蹤除錯單元等。
ARM Cortex處理器屬於ARMv7架構,如圖1-1,分為Cortex-A、Cortex-R和Cortex-M三子系列。Cortex-A是一種應用處理器(application processor),它是針對高效能應用平台系統而設計,通常用於行動運算、智慧型手機、高能效伺服器等。Cortex-R是一種即時處理器(real-time processor),其設計強化了即時應用系統的性能與可靠度,適用於硬碟控制器、汽車傳動系統和無線通訊的基頻控制等領域。Cortex-M是一種微控制處理器(microcontroller processor),專門用於嵌入式微控制領城,具有高成本效益比的優勢,通常用於智能電表、穿戴式裝置、汽車...
作者序
微控制器應用領域非常廣泛,它是物聯網、工業控制、嵌入式應用、車用電子、智慧醫療、消費性電子與通訊裝置等領域的核心。只要是具有智慧化的資訊電子產品,就一定需要微控制器技術,所以學好微控制器技術非常有用,對未來職涯的發展很有助益。那麼要如何學好微控制器呢?微控制器技術是一門實作的課程,如果僅學習理論知識而不動手操作是很難學會的。所以,學好微控制器技術必須做到理論知識與實驗操作兼顧,邊學邊做,方可達到最佳的學習效果。
本書作者在微控制器系統理論及實務經驗都相當豐富,為帶領讀者進入微控制器之應用領域,將多年教學經驗,花費許多時間,彙編成冊.本書撰寫是以意法半導體的STM32L476G-DISCO探索板為硬體開發平台,利用STM32CubeMX軟體配置微控制器外部周邊,進而生成相應的初始化程式碼,簡化了系統開發的工作,所有應用程式以C語言為基礎來開發,讀者根據本書描述的實驗步驟可輕易上手,並藉此改進和擴充,從而開發出規模更大、效能更佳、更具智慧的微控制器系統。
本書主要內容包括ARM Cortex-M4處理器與STM32L4微控制器簡介、STM32CubeMX、Keil MDK-ARM與STM-Studio開發工具的介紹、通用輸入輸出埠技術、中斷技術、脈波寬度調變技術、即時時鐘控制技術、A/D與D/A控制技術、串列通信技術、慣性感測器(陀螺儀、加速度計、指南針)技術。本書附有完整的範例程式與詳盡的實驗步驟,帶領讀者逐步完成微控制器程式的設計撰寫,培養讀者微控制器系統的開發能力。
本書能夠付梓要感謝五南圖書股份公司王正華主編與協助校正的編輯小組成員。此外,本書涵蓋的內容廣泛,書中錯誤和疏漏之處在所難免,懇請讀者不吝給予指正。
微控制器應用領域非常廣泛,它是物聯網、工業控制、嵌入式應用、車用電子、智慧醫療、消費性電子與通訊裝置等領域的核心。只要是具有智慧化的資訊電子產品,就一定需要微控制器技術,所以學好微控制器技術非常有用,對未來職涯的發展很有助益。那麼要如何學好微控制器呢?微控制器技術是一門實作的課程,如果僅學習理論知識而不動手操作是很難學會的。所以,學好微控制器技術必須做到理論知識與實驗操作兼顧,邊學邊做,方可達到最佳的學習效果。
本書作者在微控制器系統理論及實務經驗都相當豐富,為帶領讀者進入微控制器之應用領域,將...
目錄
目錄
第1章 ARM Cortex-M4處理器與STM32L4微控制器簡介
1-1 Cortex-M處理器家族
1-2 ARM Cortex-M4F處理器基本結構
1-3 STM32L476VGT6微處理器
第2章 STM32L4系列微控制器開發平台與開發工具介紹
2-1 開發平台:STM32L476G-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 數位輸入設定
5-2 JOYSTICK單鈕控制LED燈(On/Off)
5-3 JOYSTICK單鈕控制LED燈閃爍
5-4 JOYSTICK多鈕控制LED燈狀態
第6章 Glasses LCD顯示控制
6-1 LCD數位輸入設定
6-2 LCD字型閃爍
6-3 LCD碼錶計時器控制(On/Off)
6-4 LCD字串走馬燈控制
第7章 SysTick系統時鐘與計時器(Timer)
7-1 振盪器與Systick時鐘
7-2 Systick計時器設定
7-3 內部中斷Timer計時器控制LED燈閃爍
7-4 多個計數器設定與啟用控制
第8章 外部中斷(External Interrupter)控制
8-1 接腳中斷輸入設定
8-2 JOYSTICK中斷控制LED燈(On/Off)
8-3 JOYSTICK單鈕中斷觸發改變LED燈閃爍速度
8-4 JOYSTICK多按鈕控制LED與LCD
第9章 脈波寬度調變控制
9-1 計時器PWM模式
9-2 PWM控制的實驗
第10章 即時時鐘控制
10-1 RTC簡介
10-2 RTC日曆
10-3 RTC鬧鐘
10-4 RTC日曆與鬧鐘功能實驗
第11章 數位至類比轉換器(DAC)
11-1 DAC原理
11-2 STM32L476VG上的DAC
11-3 DAC轉換的過程
11-4 緩衝輸出(Buffered Output)
11-5 使用DAC產生鋸齒波
第12章 類比至數位轉換器(ADC)
12-1 逐次逼近型(SAR:Successive Approximation Register)ADC原理
12-2 ADC的主要參數
12-3 STM32L476VG上的ADC
12-4 STM32L476VG上ADC的使用
12-5 ADC與DAC綜合實驗
第13章 UART通訊界面
13-1 UART簡介
13-2 輪詢式UART通訊
13-3 中斷式UART通訊
13-4 直接記憶體存取式UART通訊
第14章 音訊錄製與播放
14-1 原理簡介
14-2 實驗步驟
第15章 微電子陀螺儀感測(SPI)
15-1 MEMS陀螺儀
15-2 主/從裝置的SPI連接
15-3 利用USART2傳送GYROSCOPE資料
15-4 利用USART2讀取終端機輸入資料控制LED燈On/Off
第16章 運動感測(3軸加速度計與3軸磁力計)
16-1 原理簡介
16-2 3軸加速度計實驗
目錄
第1章 ARM Cortex-M4處理器與STM32L4微控制器簡介
1-1 Cortex-M處理器家族
1-2 ARM Cortex-M4F處理器基本結構
1-3 STM32L476VGT6微處理器
第2章 STM32L4系列微控制器開發平台與開發工具介紹
2-1 開發平台:STM32L476G-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...