本書深入淺出地講解嵌入式系統(tǒng)開發(fā)的基礎知識,從原理、方法、工程實踐等多視角介紹ARMMCU嵌入式開發(fā)中的各種常用技術,為每個知識點配備了開發(fā)案例,使讀者既能掌握工程開發(fā)方法,又能掌握技術原理,為后續(xù)整個技術生涯奠定堅實基礎。
本書共12章,前兩章講述基本概念、開發(fā)環(huán)境準備及ARMCortex-M3架構;第3~5章講述基礎的GPIO、中斷機制和定時器機制;第6~9章講述常用的通信方法,包括串行通信、I2C、SPI、CAN;第10章講述ADC的原理與應用;第11章進一步講述如何通過DMA技術進行ADC采樣;第12章通過舵機、步進電機講解GD32進行電機控制的入門知識。
本書由多位十數(shù)年嵌入式研發(fā)與教學經(jīng)驗的高校教師、企業(yè)工程師組成的團隊共同編著完成,所有案例都是基于國產(chǎn)GD32F10x系列芯片實現(xiàn),并且為每章都配套了詳細的視頻講解,助力讀者輕松零基礎入門并精通ARM單片機開發(fā)。本書既可作為高等院校和培訓機構相關專業(yè)的教學參考書,也可供正在為ARM芯片選擇國產(chǎn)替代方案的企業(yè)工程師選作技術參考書。
本書深入淺出地講解嵌入式系統(tǒng)開發(fā)的基礎知識,從原理、方法、工程實踐等多視角介紹ARM MCU嵌入式開發(fā)中的各種常用技術,為每個知識點配備了開發(fā)案例,使讀者既能掌握工程開發(fā)方法,又能掌握技術原理,為后續(xù)整個技術生涯奠定堅實基礎。
易教易學:針對本科教學的特點,配套了教學視頻、實驗案例,并開發(fā)了配套教學硬件。
理論聯(lián)系實踐:強調工程應用的同時注重底層原理的解釋,讓讀者能知其然、知其所以然。
黨的二十大報告中指出: 教育、科技、人才是全面建設社會主義現(xiàn)代化國家的基礎性、戰(zhàn)略性支撐。必須堅持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動力,深入實施科教興國戰(zhàn)略、人才強國戰(zhàn)略、創(chuàng)新驅動發(fā)展戰(zhàn)略,這三大戰(zhàn)略共同服務于創(chuàng)新型國家的建設。高等教育與經(jīng)濟社會發(fā)展緊密相連,對促進就業(yè)創(chuàng)業(yè)、助力經(jīng)濟社會發(fā)展、增進人民福祉具有重要意義。
一方面,在信息技術越來越發(fā)達的今天,嵌入式系統(tǒng)正在以前所未有的速度融入我們的生活、工作、娛樂等方方面面。從普通的鍵盤、鼠標,到無人機、3D打印機,甚至月球車、火星車,無不是嵌入式系統(tǒng)在大顯身手。另一方面,中美貿(mào)易摩擦不斷,特別是在芯片相關領域的沖突不斷升級,國內相關廠家尋找國產(chǎn)替代主控芯片的工作刻不容緩。
我國廠商在選用國外品牌的ARM主控芯片時通常會碰到兩個問題: ①
貨源供應不穩(wěn)定,產(chǎn)能隨時會受限制; ②
芯片價格波動大,給終端產(chǎn)品的市場定價、客戶維系等帶來極大困難。因此,積極尋找國產(chǎn)芯片替代成為目前所有中國嵌入式相關行業(yè)上下游廠家的共識。但是,國產(chǎn)芯片由于發(fā)展時間相對較短,廠家在選用國產(chǎn)芯片替代時又存在配套學習資源缺乏、熟練的技術人員招聘困難等問題。因此,無論是高校相關專業(yè)的師生還是智能硬件相關產(chǎn)業(yè)的技術人員,都急需一套專門針對國產(chǎn)ARM芯片的基礎教程。
針對上述現(xiàn)狀,作者總結多年的嵌入式研發(fā)與教學經(jīng)驗、查閱大量參考資料編寫成本書,力求清晰地闡述所有ARM單片機開發(fā)涉及的知識點,并為所有知識點都配套了講解詳細的視頻,同時配有實用性強的案例、與工程實際接近的參考代碼等電子資源,使讀者學完本書內容后可以直接上手實際項目開發(fā)。同時,作者聯(lián)合業(yè)內知名的國產(chǎn)ARM芯片應用廠家開發(fā)了一套與教材內容適配的開發(fā)板,開發(fā)板制作精良、價格實惠,此開發(fā)板既可作為學習工具,同時其各個模組的案例代碼也可在后續(xù)的實際項目開發(fā)中直接移植使用。
本書深入淺出地講解嵌入式系統(tǒng)開發(fā)的基礎知識,從原理、方法、工程實踐等多視角介紹ARM MCU嵌入式開發(fā)中的各種常用技術,為每個知識點配備了開發(fā)案例(配套電子資源,有翔實注釋的代碼),使讀者既能掌握工程開發(fā)方法,又能掌握技術原理,為后續(xù)整個技術生涯奠定堅實基礎。雖然本書在編寫過程中盡量做到深入淺出,以使讀者能夠從零基礎入門嵌入式開發(fā),但依然建議讀者在閱讀本書之前具備一定的C語言開發(fā)基礎及硬件電路的基礎知識。
本書中的案例全部采用GD官方的標準庫函數(shù)開發(fā)完成,案例均采用模塊化的方式進行設計實現(xiàn),各種模塊代碼既可以供讀者在學習時模仿復現(xiàn),也可以在將來的技術開發(fā)中直接復用。
資源下載提示
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
視頻等資源: 掃描封底的文泉云盤防盜碼,再掃描書中相應章節(jié)的二維碼,可以在線學習。
由于編者水平所限,書中難免有疏漏,懇請讀者批評指正。
編者
2024年4月
高延增,2010年博士畢業(yè)于華南理工大學,其后十余年一直從事嵌入式相關的項目研發(fā)與教學工作,現(xiàn)為嘉應學院計算機科學與技術專業(yè)專任教師,主要從事嵌入式學習相關的內容制作與套件開發(fā)等工作。。此前曾擔任廣州百眾信息技術有限公司嵌入式研發(fā)工程師,主持研發(fā)了3D打印機云管控平臺、安全生產(chǎn)平臺、智能小家電通用控制平臺等多個大中型項目。主編過《嵌入式系統(tǒng)開發(fā)基礎教程》《數(shù)據(jù)挖掘算法導論》等書籍,所編著書籍因文筆流暢、通俗易懂、知識架構組織合理、易于教學使用等優(yōu)點受到讀者歡迎。
配套課件(PPT)
源碼及原理圖
第1章概述(112min)
1.1理解嵌入式系統(tǒng)的概念
1.1.1什么是嵌入式系統(tǒng)
1.1.2嵌入式系統(tǒng)的構成原理
1.1.3嵌入式系統(tǒng)的分類
1.1.4嵌入式系統(tǒng)的處理器技術簡介
1.2ARM簡史
1.2.1ARM的發(fā)展歷程
1.2.2ARM架構的變遷
1.2.3ARM嵌入式開發(fā)的學習路線
1.3準備工作
1.3.1教材配套開發(fā)板介紹
1.3.2開發(fā)環(huán)境準備
1.3.3創(chuàng)建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架構的實現(xiàn)
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端口輸入狀態(tài)寄存器(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常用庫函數(shù)介紹
3.4.1初始化函數(shù)
3.4.2輸入輸出控制函數(shù)
3.4.3狀態(tài)查詢函數(shù)
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實驗現(xiàn)象
第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外部中斷處理的常用庫函數(shù)簡介
4.4.1初始化或使能相關函數(shù)
4.4.2EXTI外部中斷響應處理相關函數(shù)
4.5中斷案例: 中斷式觸摸按鍵控制LED
4.5.1案例需求
4.5.2案例方法
4.5.3案例代碼
4.5.4效果分析
4.6小結
4.7練習題
4.8實驗: 上升沿和雙邊沿觸發(fā)的中斷
4.8.1實驗目標
4.8.2實驗方法分析
4.8.3實驗代碼
4.8.4實驗現(xiàn)象
第5章定時器(439min)
5.1理解定時器
5.1.1可編程定時/計數(shù)器
5.1.2理解GD32F10x的時鐘樹
5.2系統(tǒng)滴答定時器SysTick
5.2.1SysTick的工作原理
5.2.2SysTick的使用方法
5.2.3SysTick案例: SysTick控制LED閃爍
5.3實時時鐘
5.3.1RTC的原理
5.3.2常用庫函數(shù)
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實現(xiàn)呼吸燈效果
5.8.1實驗目標
5.8.2實驗方法分析
5.8.3實驗代碼
5.8.4實驗現(xiàn)象
第6章通用同步/異步串行通信USART(160min)
6.1串行通信原理概述
6.1.1串行通信的硬件連接
6.1.2異步串行通信的數(shù)據(jù)幀
6.2GD32F10x的串口工作原理
6.2.1USART的結構框圖
6.2.2利用庫函數(shù)設置和使用串口
6.3UART案例: 以串口查詢方式發(fā)送數(shù)據(jù)
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實驗現(xiàn)象
第7章集成電路總線I2C通信(350min)
7.1理解I2C
7.1.1I2C的物理層
7.1.2I2C的協(xié)議層
7.2GD32的I2C模塊
7.2.1數(shù)據(jù)有效性
7.2.2開始與停止狀態(tài)
7.2.3時鐘同步和仲裁
7.2.4編程模型
7.2.5DMA模式下數(shù)據(jù)傳輸
7.2.6報文錯誤校驗
7.2.7狀態(tài)、錯誤和中斷
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實驗現(xiàn)象
第8章串行外設SPI(252min)
8.1認識SPI
8.1.1SPI協(xié)議原理概述
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實驗現(xiàn)象
第9章控制器局域網(wǎng)(170min)
9.1理解CAN
9.1.1CAN協(xié)議簡介
9.1.2CAN協(xié)議的物理層
9.1.3CAN協(xié)議的數(shù)據(jù)鏈路層
9.1.4CAN的位同步
9.2GD32的CAN外設
9.2.1一般使用流程
9.2.2工作與通信模式
9.2.3數(shù)據(jù)收發(fā)
9.2.4過濾功能
9.2.5中斷
9.3小結
9.4練習題
9.5CAT實驗: 自回環(huán)通信模式案例
9.5.1實驗目標
9.5.2實驗方法分析
9.5.3實驗代碼
9.5.4實驗現(xiàn)象
第10章模數(shù)轉換器(142min)
10.1ADC一般概念
10.1.1模擬信號與數(shù)字信號
10.1.2模數(shù)原理概述
10.2GD32F10x的ADC外設
10.2.1ADC電源與時鐘
10.2.2ADC通道和轉換順序
10.2.3運行模式
10.2.4采樣時間與外部觸發(fā)配置
10.3ADC庫函數(shù)的使用
10.3.1常用庫函數(shù)
10.3.2利用庫函數(shù)實現(xiàn)ADC步驟
10.4小結
10.5練習題
10.6ADC實驗: 測量光敏電阻的阻值
10.6.1實驗目標
10.6.2實驗方法分析
10.6.3實驗代碼
10.6.4實驗現(xiàn)象
第11章直接數(shù)據(jù)存儲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實驗現(xiàn)象
第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實驗現(xiàn)象
參考文獻