ARM MCU嵌入式開發——基於國產GD32F10x芯片(微課視頻版)
高延增、魏輝、侯躍恩
商品描述
本書深入淺出地講解嵌入式系統開發的基礎知識,從原理、方法、工程實踐等多視角介紹ARM MCU嵌入式開發中的各種常用技術,為每個知識點配備了開發案例(配套電子資源有詳實註釋的代碼),使讀者既能掌握工程開發方法,又能掌握技術原理,為後續整個技術生涯奠定堅實基礎。 本書共13章,前兩章講述基本概念、開發環境準備以及ARM Cortex-M3架構;第3~5章講述基礎的GPIO、中斷機制和定時器機制;第6~9章講述常用的通信方法,包括串行通信、IIC、SPI、CAN;第10章講述ADC\DAC的原理與應用,第11章進一步講述如何通過DMA技術進行ADC採樣;第12章專門講解各種常用的電機控制原理與方法;第13章通過一個三自由度機械臂的綜合案例統領全書內容,為讀者講述如何在IT工程管理方法指導下完成嵌入式項目開發。 本書由多位十數年嵌入式研發與教學經驗的高校教師、企業工程師組成的團隊共同編著完成,所有案例都是基於國產GD32F10x系列芯片實現,並且為每章都配套率詳細的視頻講解,助力讀者輕松零基礎入門並精通ARM MCU開發。本書既可作為高等院校和培訓機構相關專業的教學參考書,也可供正在為Arm芯片選擇國產替代方案的企業工程師選作技術參考書。
目錄大綱
目錄
配套課件(PPT)
源碼及原理圖
第1章概述(112min)
1.1理解嵌入式系統的概念
1.1.1什麽是嵌入式系統
1.1.2嵌入式系統的構成原理
1.1.3嵌入式系統的分類
1.1.4嵌入式系統的處理器技術簡介
1.2ARM簡史
1.2.1ARM的發展歷程
1.2.2ARM架構的變遷
1.2.3ARM嵌入式開發的學習路線
1.3準備工作
1.3.1教材配套開發板介紹
1.3.2開發環境準備
1.3.3創建GD32F10x模板工程——點亮一個LED
1.4小結
1.5練習題
1.6實驗: 更改模板工程軟件,點亮兩個LED
第2章GD32F10x的架構(99min)
2.1圖靈機與電腦架構
2.1.1圖靈機簡介
2.1.2馮·諾依曼結構與哈佛結構
2.1.3算術邏輯部件與鎖存器
2.2CortexM3架構簡介
2.2.1架構總覽
2.2.2CortexM3的重點模塊
2.2.3ARM指令集與三級流水線
2.2.4存儲器映射
2.3GD32F10x對CortexM3架構的實現
2.3.1總體架構
2.3.2存儲器與映射
2.3.3啟動配置
2.3.4電源控制
2.3.5復位
2.3.6時鐘控制
2.4小結
2.5練習題
第3章通用輸入/輸出埠GPIO(184min)
3.1芯片的常用封裝
3.2GPIO工作原理
3.2.1內部結構框圖
3.2.2輸出工作模式
3.2.3輸入工作模式
3.3GPIO主要寄存器簡介
3.3.1埠控制寄存器
3.3.2埠輸入狀態寄存器(GPIOx_ISTAT,x=A..G)
3.3.3埠輸出控制寄存器(GPIOx_OCTL,x=A..G)
3.3.4埠位操作與位清除寄存器
3.3.5埠配置鎖定寄存器(GPIOx_LOCK,x=A,B)
3.3.6AFIO埠配置寄存器0(AFIO_PCF0)
3.4GPIO常用庫函數介紹
3.4.1初始化函數
3.4.2輸入輸出控制函數
3.4.3狀態查詢函數
3.5GPIO案例: 按鍵控制LED亮滅
3.5.1案例需求
3.5.2案例方法
3.5.3案例代碼
3.5.4效果分析
3.6小結
3.7練習題
3.8實驗: 物理按鍵軟件消抖
3.8.1實驗目標
3.8.2實驗方法分析
3.8.3實驗代碼
3.8.4實驗現象
第4章中斷和事件(107min)
4.1中斷的概念
4.2嵌套向量中斷控制器NVIC
4.2.1NVIC簡介
4.2.2NVIC工作機制
4.2.3NVIC配置
4.3EXTI外部中斷/事件控制器
4.3.1EXTI簡介
4.3.2EXTI原理
4.3.3EXTI通用IO映像
4.3.4EXTI使用方法
4.4EXTI外部中斷處理的常用庫函數簡介
4.4.1初始化或使能相關函數
4.4.2EXTI外部中斷響應處理相關函數
4.5中斷案例: 中斷式觸摸按鍵控制LED
4.5.1案例需求
4.5.2案例方法
4.5.3案例代碼
4.5.4效果分析
4.6小結
4.7練習題
4.8實驗: 上升沿和雙邊沿觸發的中斷
4.8.1實驗目標
4.8.2實驗方法分析
4.8.3實驗代碼
4.8.4實驗現象
第5章定時器(439min)
5.1理解定時器
5.1.1可編程定時/計數器
5.1.2理解GD32F10x的時鐘樹
5.2系統滴答定時器SysTick
5.2.1SysTick的工作原理
5.2.2SysTick的使用方法
5.2.3SysTick案例: SysTick控制LED閃爍
5.3實時時鐘
5.3.1RTC的原理
5.3.2常用庫函數
5.3.3RTC的使用方法
5.3.4RTC案例——RTC日歷
5.4看門狗
5.4.1獨立看門狗
5.4.2窗口看門狗
5.4.3看門狗案例——獨立看門狗使用示例
5.5定時器
5.5.1基本定時器
5.5.2通用定時器
5.5.3高級定時器
5.5.4定時器使用
5.6小結
5.7練習題
5.8實驗: PWM實現呼吸燈效果
5.8.1實驗目標
5.8.2實驗方法分析
5.8.3實驗代碼
5.8.4實驗現象
第6章通用同步/異步串行通信USART(160min)
6.1串行通信原理概述
6.1.1串行通信的硬件連接
6.1.2異步串行通信的數據幀
6.2GD32F10x的串口工作原理
6.2.1USART的結構框圖
6.2.2利用庫函數設置和使用串口
6.3UART案例: 以串口查詢方式發送數據
6.3.1案例目標
6.3.2案例方法
6.3.3案例代碼
6.3.4效果分析
6.4小結
6.5練習題
6.6UART實驗: UART的中斷式接收
6.6.1實驗目標
6.6.2實驗方法分析
6.6.3實驗代碼
6.6.4實驗現象
第7章集成電路總線I2C通信(350min)
7.1理解I2C
7.1.1I2C的物理層
7.1.2I2C的協議層
7.2GD32的I2C模塊
7.2.1數據有效性
7.2.2開始與停止狀態
7.2.3時鐘同步和仲裁
7.2.4編程模型
7.2.5DMA模式下數據傳輸
7.2.6報文錯誤校驗
7.2.7狀態、錯誤和中斷
7.3I2C案例: 軟件模擬I2C控制LM75AD
7.3.1案例目標
7.3.2案例方法
7.3.3案例代碼
7.3.4效果分析
7.4小結
7.5練習題
7.6I2C實驗: 硬件I2C控制OLED屏顯示
7.6.1實驗目標
7.6.2實驗方法分析
7.6.3實驗代碼
7.6.4實驗現象
第8章串行外設SPI(252min)
8.1認識SPI
8.1.1SPI協議原理概述
8.1.2一主一從的SPI通信過程
8.1.3一主多從的SPI連接方式
8.2GD32中的SPI外設
8.2.1功能框圖
8.2.2模式配置
8.3SPI案例: 軟件模擬SPI讀寫W25Qxx
8.3.1案例目標
8.3.2案例方法
8.3.3案例代碼
8.3.4效果分析
8.4小結
8.5練習題
8.6SPI案例: 硬件SPI操作W25Q32
8.6.1實驗目標
8.6.2實驗方法分析
8.6.3實驗代碼
8.6.4實驗現象
第9章控制器局域網(170min)
9.1理解CAN
9.1.1CAN協議簡介
9.1.2CAN協議的物理層
9.1.3CAN協議的數據鏈路層
9.1.4CAN的位同步
9.2GD32的CAN外設
9.2.1一般使用流程
9.2.2工作與通信模式
9.2.3數據收發
9.2.4過濾功能
9.2.5中斷
9.3小結
9.4練習題
9.5CAT實驗: 自回環通信模式案例
9.5.1實驗目標
9.5.2實驗方法分析
9.5.3實驗代碼
9.5.4實驗現象
第10章模數轉換器(142min)
10.1ADC一般概念
10.1.1模擬信號與數字信號
10.1.2模數原理概述
10.2GD32F10x的ADC外設
10.2.1ADC電源與時鐘
10.2.2ADC通道和轉換順序
10.2.3運行模式
10.2.4採樣時間與外部觸發配置
10.3ADC庫函數的使用
10.3.1常用庫函數
10.3.2利用庫函數實現ADC步驟
10.4小結
10.5練習題
10.6ADC實驗: 測量光敏電阻的阻值
10.6.1實驗目標
10.6.2實驗方法分析
10.6.3實驗代碼
10.6.4實驗現象
第11章直接數據存儲DMA(160min)
11.1概述
11.2DMA控制器原理
11.2.1理解DMA框圖
11.2.2MDA寄存器
11.2.3DMA傳輸過程
11.3GD32F10x的DMA
11.3.1GD32F10x的DMA原理框圖
11.3.2DMA傳輸功能要點
11.3.3DMA流程解析
11.4小結
11.5練習題
11.6DMA實驗: DMA ADC搖桿用法
11.6.1實驗目標
11.6.2實驗方法分析
11.6.3實驗代碼
11.6.4實驗現象
第12章電機控制入門(248min)
12.1舵機
12.1.1構成原理
12.1.2使用方法
12.1.3舵機案例: 旋轉編碼器控制舵機旋轉
12.2步進電機
12.2.1工作原理
12.2.2步進電機驅動ULN2003
12.3小結
12.4練習題
12.5步進電機實驗: 步進電機正反轉控制
12.5.1實驗目標
12.5.2實驗方法分析
12.5.3實驗代碼
12.5.4實驗現象
參考文獻