ARM Cortex-M0 + 嵌入式系統原理及應用 — STM32G071 架構、軟件和硬件集

何賓 李天凌

  • 出版商: 清華大學
  • 出版日期: 2022-09-01
  • 定價: $534
  • 售價: 8.0$427
  • 語言: 簡體中文
  • ISBN: 7302612056
  • ISBN-13: 9787302612056
  • 相關分類: ARM嵌入式系統STM32
  • 立即出貨

  • ARM Cortex-M0 + 嵌入式系統原理及應用 — STM32G071 架構、軟件和硬件集-preview-1
  • ARM Cortex-M0 + 嵌入式系統原理及應用 — STM32G071 架構、軟件和硬件集-preview-2
  • ARM Cortex-M0 + 嵌入式系統原理及應用 — STM32G071 架構、軟件和硬件集-preview-3
ARM Cortex-M0 + 嵌入式系統原理及應用 — STM32G071 架構、軟件和硬件集-preview-1

買這商品的人也買了...

商品描述

《ARM Cortex-M0+嵌入式系統原理及應用——STM32G071架構、軟件和硬件集成(微課視頻版)》以意法半導體公司的基於ARM Cortex-M0+的STM32G071 MCU為硬件平臺,以意法半導體公司的STM32CubeMX和ARM公司的Keil μVision 5(ARM版本)集成開發環境(以下簡稱Keil)為軟件平臺,以Cortex-M0+處理器核結構、高級微控制總線結構、Cortex-M0+指令集、匯編語言程序設計、C語言程序設計、低功耗控制、外設驅動與控制,以及操作系統為主線,由淺入深、由易到難系統介紹了基於STM32G071 MCU的32位嵌入式系統的開發流程和實現方法。 《ARM Cortex-M0+嵌入式系統原理及應用——STM32G071架構、軟件和硬件集成(微課視頻版)》側重於對基於ARM Cortex-M0+ MCU的32位嵌入式系統設計方法的講解。在此基礎上,通過典型設計實例說明將嵌入式系統設計方法應用於不同的應用場景的方法,使得所設計的嵌入式系統在滿足應用場景的條件下實現成本、功耗和性能之間的**平衡。 《ARM Cortex-M0+嵌入式系統原理及應用——STM32G071架構、軟件和硬件集成(微課視頻版)》可作為大學本科和高等職業教育嵌入式系統相關課程的教材,也可作為意法半導體公司舉辦的各種嵌入式系統開發和設計競賽的參考用書,對於從事基於意法半導體開發嵌入式系統應用的工程師來說,也是很好的工程參考用書。

目錄大綱

 

目錄

 

第1章嵌入式系統設計導論

 

1.1微控制器和嵌入式系統基本概念

 

1.1.1微控制器的定義

 

1.1.2微控制器架構

 

1.1.3微控制器和微處理器的差異

 

1.1.4微控制器的主要應用場景

 

1.1.5嵌入式系統基本概念

 

1.2STM32 CortexM系列MCU分類和性能 

 

1.2.1CortexM系列處理器IP核

 

1.2.2STM32 CortexM系列MCU產品

 

1.2.3STM32G0系列MCU的結構和功能 

 

第2章軟件工具下載、安裝和應用

 

2.1STM32CubeMX工具的下載和安裝

 

2.1.1STM32CubeMX工具的下載

 

2.1.2STM32CubeMX工具的安裝

 

2.1.3STM32G0系列MCU支持包的安裝

 

2.2Keil μVision(ARM版本)工具的下載、安裝和授權

 

2.2.1Keil μVision內嵌編譯工具鏈架構

 

2.2.2Keil μVision(ARM版本)工具的下載和安裝

 

2.2.3Keil μVision(ARM版本)工具的授權

 

2.3設計實例: LED的驅動和控制

 

2.3.1生成簡單的工程

 

2.3.2添加設計代碼

 

2.3.3編譯和下載設計 

 

第3章CortexM0+處理器結構

 

3.1CortexM0+處理器核和核心外設

 

3.1.1CortexM0+處理器核

 

3.1.2系統級接口

 

3.1.3可配置的調試

 

3.1.4核心外設

 

3.2CortexM0+處理器的寄存器

 

3.2.1通用寄存器

 

3.2.2堆棧指針

 

3.2.3程序計數器

 

3.2.4鏈接寄存器

 

3.2.5程序狀態寄存器

 

3.2.6可中斷重啟指令

 

3.2.7異常屏蔽寄存器

 

3.2.8優先級屏蔽寄存器

 

3.2.9控制寄存器

 

3.3CortexM0+存儲器空間結構

 

3.3.1存儲空間映射架構

 

3.3.2代碼區域地址映射

 

3.3.3SRAM區域地址映射

 

3.3.4外設區域地址映射

 

3.3.5PPB地址空間映射

 

3.3.6SCS地址空間映射

 

3.3.7系統控制和ID寄存器

 

 

 

 

 

3.4CortexM0+的端及分配

 

3.5CortexM0+處理器異常及處理

 

3.5.1異常所處的狀態

 

3.5.2異常類型

 

3.5.3異常優先級

 

3.5.4向量表

 

3.5.5異常的進入和返回

 

3.5.6NVIC中斷寄存器集

 

3.5.7電平和脈沖中斷

 

3.6CortexM0+存儲器保護單元

 

3.6.1MPU寄存器

 

3.6.2MPU訪問權限屬性

 

3.6.3更新MPU區域

 

3.6.4子區域及用法

 

3.6.5MPU設計技巧和提示

 

第4章高級微控制器總線結構

 

4.1ARM AMBA系統總線

 

4.2AMBA APB規範

 

4.2.1AMBA APB寫傳輸

 

4.2.2AMBA APB讀傳輸

 

4.2.3AMBA APB錯誤響應

 

4.2.4AMBA APB操作狀態

 

4.2.5AMBA3 APB信號

 

4.3AMBA AHB規範

 

4.3.1AMBA AHB結構

 

4.3.2AMBA AHB操作

 

4.3.3AMBA AHB傳輸類型

 

4.3.4AMBA AHB猝發操作

 

4.3.5AMBA AHB傳輸控制信號

 

4.3.6AMBA AHB地址解碼

 

4.3.7AMBA AHB從設備傳輸響應

 

4.3.8AMBA AHB數據總線

 

4.3.9AMBA AHB傳輸仲裁

 

4.3.10AMBA AHB分割傳輸

 

4.3.11AMBA AHB復位

 

4.3.12AMBA AHB總線數據寬度

 

4.3.13AMBA AHB接口設備

 

第5章CortexM0+處理器指令集

 

5.1Thumb指令集

 

5.2Keil MDK匯編語言指令格式要點

 

5.2.1匯編語言源代碼中的文字

 

5.2.2匯編語言源代碼行的語法

 

5.2.3匯編語言指令後綴的含義

 

5.3寄存器說明符的限制規則

 

5.3.1使用0b1111作為寄存器說明符的規則

 

5.3.2使用0b1101作為寄存器說明符的規則

 

5.4寄存器傳輸指令

 

5.5存儲器加載和保存指令

 

5.5.1存儲器加載指令

 

5.5.2存儲器保存指令

 

5.6多數據加載和保存指令

 

5.6.1多數據加載指令

 

5.6.2多數據保存指令

 

5.7堆棧訪問指令

 

5.8算術運算指令

 

5.8.1加法指令

 

5.8.2減法指令

 

5.8.3乘法指令

 

5.8.4比較指令

 

5.9邏輯操作指令

 

5.10移位操作指令

 

5.10.1右移指令

 

5.10.2左移指令

 

5.11反序操作指令

 

5.12擴展操作指令

 

5.13程序流控制指令

 

5.14存儲器屏障指令

 

5.15異常相關指令

 

5.16休眠相關指令

 

5.17其他指令

 

第6章CortexM0+匯編語言編程基礎

 

6.1匯編語言程序規範、架構和約束

 

6.1.1統一匯編語言規範

 

6.1.2ARM匯編語言模塊架構

 

6.1.3標識符的命名規則

 

6.1.4調用子程序的寄存器使用規則

 

6.2表達式和操作符

 

6.2.1變量 

 

6.2.2常量

 

6.2.3匯編時替換變量

 

6.2.4標號

 

6.2.5字符串表達式

 

6.2.6一元運算符

 

6.2.7二元運算符

 

6.2.8運算符的優先級

 

6.3常用匯編器命令

 

6.4STM32G0的向量表格式

 

6.5配置堆和堆棧

 

6.6設計實例一: 匯編語言程序的分析和調試

 

6.6.1冒泡排序的基本思想

 

6.6.2冒泡排序算法的設計實現

 

6.6.3冒泡排序算法的調試

 

6.7設計實例二: GPIO的驅動和控制

 

6.7.1STM32G071的GPIO原理

 

6.7.2所用寄存器的地址和功能

 

6.7.3GPIO驅動和控制的實現

 

6.8設計實例三: 中斷的控制和實現

 

6.8.1擴展中斷和事件控制器原理

 

6.8.2所用寄存器的地址和功能

 

6.8.3向量表信息

 

6.8.4應用程序的設計

 

6.8.5程序代碼的調試

 

第7章CortexM0+ C語言編程基礎

 

7.1ARM C/C++編譯器選項

 

7.1.1ARM C編譯器的優化級別

 

7.1.2ARM Compiler 5的參數設置選項

 

7.2常量和變量

 

7.2.1常量

 

7.2.2變量

 

7.3數據類型

 

7.3.1Volatile關鍵字

 

7.3.2整數類型變量的聲明和表示

 

7.3.3字符類型變量的聲明和表示

 

7.3.4浮點類型變量的聲明和表示

 

7.3.5復數類型變量的聲明和表示

 

7.3.6布爾類型變量的聲明和表示

 

7.3.7自定義數據類型的聲明和表示

 

7.3.8變量的存儲類型

 

7.3.9編譯器指定的變量屬性 

 

7.4運算符

 

7.4.1賦值運算符

 

7.4.2算術運算符

 

7.4.3遞增和遞減運算符

 

7.4.4關系運算符

 

7.4.5邏輯運算符

 

7.4.6位運算符

 

7.4.7復合賦值運算符

 

7.4.8逗號運算符

 

7.4.9條件運算符

 

7.4.10強制類型轉換符

 

7.4.11sizeof運算符

 

7.5描述語句

 

7.5.1輸入和輸出語句

 

7.5.2輸入和輸出重定向

 

7.5.3表達式語句

 

7.5.4條件語句

 

7.5.5開關語句

 

7.5.6循環語句

 

7.5.7返回語句

 

7.6數組

 

7.6.1一維數組的表示方法

 

7.6.2多維數組的表示方法

 

7.6.3索引數組元素的方法

 

7.6.4動態輸入數組元素的方法

 

7.6.5矩陣運算算法的實現

 

7.7指針

 

7.7.1指針的概念

 

7.7.2指向指針的指針

 

7.7.3指針變量輸入

 

7.7.4指針限定符restrict

 

7.8函數

 

7.8.1函數聲明

 

7.8.2函數調用

 

7.8.3內聯函數聲明和調用

 

7.8.4遞歸函數的調用

 

7.8.5編譯器指定的函數屬性

 

7.8.6數組類型傳遞參數

 

7.8.7指針類型傳遞參數

 

7.8.8指針函數

 

7.8.9函數指針

 

7.9預編譯指令

 

7.9.1宏定義

 

7.9.2文件包含

 

7.9.3條件編譯

 

7.9.4編譯指示

 

7.9.5其他預編譯命令

 

7.10復雜數據結構

 

7.10.1結構

 

7.10.2聯合

 

7.10.3枚舉

 

7.11ARM C microlib庫

 

7.11.1概述

 

7.11.2microlib和默認C庫之間的區別

 

7.12C語言設計實例一: 1602字符型LCD的驅動

 

7.12.11602字符型LCD的原理

 

7.12.21602字符型LCD的處理流程

 

7.12.31602字符型LCD和開發板的硬件連接

 

7.12.4程序代碼的設計

 

7.13C語言設計實例二: 中斷控制與1602字符型LCD的交互

 

7.13.1程序代碼的設計

 

7.13.2C語言中斷程序的分析

 

第8章CortexM0+ C語言編程進階

 

8.1內聯匯編的格式和用法

 

8.2CMSIS軟件架構

 

8.2.1引入CMSIS的必要性

 

8.2.2CMSIS的架構

 

8.2.3CMSIS的優勢

 

8.2.4CMSIS的編程規則

 

8.2.5CMSIS軟件包

 

8.2.6使用CMSIS訪問不同資源

 

8.3設計實例一: 內聯匯編的設計與實現

 

8.3.1創建設計工程

 

8.3.2添加新的設計文件

 

8.3.3設計分析

 

8.4設計實例二: 軟件驅動的設計與實現

 

8.4.1創建HAL的設計實例

 

8.4.2創建LL的設計實例

 

第9章電源、時鐘和復位原理及應用

 

9.1電源系統原理及功能

 

9.1.1電源系統框架

 

9.1.2電源監控

 

9.1.3低功耗模式

 

9.2RCC中的時鐘管理功能 

 

9.2.1RCC中的時鐘源

 

9.2.2RCC中的時鐘樹結構

 

9.3RCC中的復位管理功能

 

9.3.1電源復位

 

9.3.2系統復位

 

9.3.3RTC域復位

 

9.4低功耗設計實例一: 從停止模式喚醒MCU的實現

 

9.4.1設計策略和實現目標

 

9.4.2程序設計和實現

 

9.5低功耗設計實例二: 定時器喚醒功耗分析

 

9.6低功耗設計實例三: 運行模式和低功耗模式狀態的顯示 

 

9.6.1第一種設計實現方法

 

9.6.2第二種設計實現方法

 

第10章看門狗原理及應用

 

10.1獨立看門狗原理和功能

 

10.1.1IWDG的結構

 

10.1.2IWDG的工作原理

 

10.1.3IWDG時鐘基準和超時的設置

 

10.2獨立看門狗設計實例: 實現與分析

 

10.2.1生成工程框架

 

10.2.2添加設計代碼 

 

10.2.3設計下載和分析

 

第11章定時器的原理及應用

 

11.1脈沖寬度調制的原理

 

11.2直流風扇的驅動原理

 

11.2.1直流風扇的規範和連線

 

11.2.2PWM速度控制功能

 

11.2.3脈沖傳感器(轉速輸出類型)

 

11.3通用定時器的結構和主要功能

 

11.3.1時基單元

 

11.3.2計數器模式

 

11.3.3時鐘選擇

 

11.3.4輸入捕獲模式

 

11.3.5PWM模式

 

11.3.6單脈沖模式

 

11.4直流風扇驅動和測速的設計與實現

 

11.4.1系統設計策略

 

11.4.2系統硬件連接

 

11.4.3應用程序的設計

 

第12章異步和同步串行接口的原理及應用

 

12.1低功耗通用異步收發器的原理

 

12.1.1模塊結構

 

12.1.2接口信號

 

12.1.3數據格式

 

12.1.4FIFO模式

 

12.1.5單線半雙工模式

 

12.1.6發送器原理

 

12.1.7接收器原理

 

12.1.8波特率發生器 

 

12.1.9喚醒和中斷事件

 

12.2設計實例: 基於LPUART和紅外接口的串行通信的實現 

 

12.2.1紅外串行通信設計思路

 

12.2.2串口的通信參數配置規則

 

12.2.3紅外發射和接收電路的設計

 

12.2.4紅外接口的原理

 

12.2.5信號的編碼與解碼

 

12.2.6紅外通信系統的抗乾擾設計

 

12.2.7發送端應用程序的設計與實現

 

12.2.8接收端應用程序的設計與實現

 

第13章人機交互游戲的設計與實現

 

13.1彩色觸摸屏模塊的信號定義 

 

13.2STM32G071 MCU對彩屏的訪問控制

 

13.2.1STM32G071 MCU提供給彩屏的寫控制信號

 

13.2.2STM32G071 MCU提供給觸摸屏的讀控制信號

 

13.2.3ILI9341讀寫命令/數據格式

 

13.3彩屏基本繪圖流程

 

13.4貪吃蛇游戲的設計與實現

 

13.4.1設計前需要考慮的問題

 

13.4.2屏幕顯示區域的劃分

 

13.4.3圖形顯示模式的設計

 

13.4.4字符顯示模式的設計

 

13.4.5外部按鍵的連接和功能

 

13.4.6游戲邏輯設計的關鍵問題

 

13.4.7尋徑算法分析

 

13.4.8設計優化