黨的二十大報(bào)告中指出: 教育、科技、人才是全面建設(shè)社會(huì)主義現(xiàn)代化國家的基礎(chǔ)性、戰(zhàn)略性支撐。必須堅(jiān)持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動(dòng)力,深入實(shí)施科教興國戰(zhàn)略、人才強(qiáng)國戰(zhàn)略、創(chuàng)新驅(qū)動(dòng)發(fā)展戰(zhàn)略,這三大戰(zhàn)略共同服務(wù)于創(chuàng)新型國家的建設(shè)。高等教育與經(jīng)濟(jì)社會(huì)發(fā)展緊密相連,對(duì)促進(jìn)就業(yè)創(chuàng)業(yè)、助力經(jīng)濟(jì)社會(huì)發(fā)展、增進(jìn)人民福祉具有重要意義。
一方面,在信息技術(shù)越來越發(fā)達(dá)的今天,嵌入式系統(tǒng)正在以前所未有的速度融入我們的生活、工作、娛樂等方方面面。從普通的鍵盤、鼠標(biāo),到無人機(jī)、3D打印機(jī),甚至月球車、火星車,無不是嵌入式系統(tǒng)在大顯身手。另一方面,中美貿(mào)易摩擦不斷,特別是在芯片相關(guān)領(lǐng)域的沖突不斷升級(jí),國內(nèi)相關(guān)廠家尋找國產(chǎn)替代主控芯片的工作刻不容緩。
我國廠商在選用國外品牌的ARM主控芯片時(shí)通常會(huì)碰到兩個(gè)問題: ①
貨源供應(yīng)不穩(wěn)定,產(chǎn)能隨時(shí)會(huì)受限制; ②
芯片價(jià)格波動(dòng)大,給終端產(chǎn)品的市場(chǎng)定價(jià)、客戶維系等帶來極大困難。因此,積極尋找國產(chǎn)芯片替代成為目前所有中國嵌入式相關(guān)行業(yè)上下游廠家的共識(shí)。但是,國產(chǎn)芯片由于發(fā)展時(shí)間相對(duì)較短,廠家在選用國產(chǎn)芯片替代時(shí)又存在配套學(xué)習(xí)資源缺乏、熟練的技術(shù)人員招聘困難等問題。因此,無論是高校相關(guān)專業(yè)的師生還是智能硬件相關(guān)產(chǎn)業(yè)的技術(shù)人員,都急需一套專門針對(duì)國產(chǎn)ARM芯片的基礎(chǔ)教程。
針對(duì)上述現(xiàn)狀,作者總結(jié)多年的嵌入式研發(fā)與教學(xué)經(jīng)驗(yàn)、查閱大量參考資料編寫成本書,力求清晰地闡述所有ARM單片機(jī)開發(fā)涉及的知識(shí)點(diǎn),并為所有知識(shí)點(diǎn)都配套了講解詳細(xì)的視頻,同時(shí)配有實(shí)用性強(qiáng)的案例、與工程實(shí)際接近的參考代碼等電子資源,使讀者學(xué)完本書內(nèi)容后可以直接上手實(shí)際項(xiàng)目開發(fā)。同時(shí),作者聯(lián)合業(yè)內(nèi)知名的國產(chǎn)ARM芯片應(yīng)用廠家開發(fā)了一套與教材內(nèi)容適配的開發(fā)板,開發(fā)板制作精良、價(jià)格實(shí)惠,此開發(fā)板既可作為學(xué)習(xí)工具,同時(shí)其各個(gè)模組的案例代碼也可在后續(xù)的實(shí)際項(xiàng)目開發(fā)中直接移植使用。
本書深入淺出地講解嵌入式系統(tǒng)開發(fā)的基礎(chǔ)知識(shí),從原理、方法、工程實(shí)踐等多視角介紹ARM MCU嵌入式開發(fā)中的各種常用技術(shù),為每個(gè)知識(shí)點(diǎn)配備了開發(fā)案例(配套電子資源,有翔實(shí)注釋的代碼),使讀者既能掌握工程開發(fā)方法,又能掌握技術(shù)原理,為后續(xù)整個(gè)技術(shù)生涯奠定堅(jiān)實(shí)基礎(chǔ)。雖然本書在編寫過程中盡量做到深入淺出,以使讀者能夠從零基礎(chǔ)入門嵌入式開發(fā),但依然建議讀者在閱讀本書之前具備一定的C語言開發(fā)基礎(chǔ)及硬件電路的基礎(chǔ)知識(shí)。
本書中的案例全部采用GD官方的標(biāo)準(zhǔn)庫函數(shù)開發(fā)完成,案例均采用模塊化的方式進(jìn)行設(shè)計(jì)實(shí)現(xiàn),各種模塊代碼既可以供讀者在學(xué)習(xí)時(shí)模仿復(fù)現(xiàn),也可以在將來的技術(shù)開發(fā)中直接復(fù)用。
資源下載提示
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
視頻等資源: 掃描封底的文泉云盤防盜碼,再掃描書中相應(yīng)章節(jié)的二維碼,可以在線學(xué)習(xí)。
由于編者水平所限,書中難免有疏漏,懇請(qǐng)讀者批評(píng)指正。
編者
2024年4月
配套課件(PPT)
源碼及原理圖
第1章概述(112min)
1.1理解嵌入式系統(tǒng)的概念
1.1.1什么是嵌入式系統(tǒng)
1.1.2嵌入式系統(tǒng)的構(gòu)成原理
1.1.3嵌入式系統(tǒng)的分類
1.1.4嵌入式系統(tǒng)的處理器技術(shù)簡(jiǎn)介
1.2ARM簡(jiǎn)史
1.2.1ARM的發(fā)展歷程
1.2.2ARM架構(gòu)的變遷
1.2.3ARM嵌入式開發(fā)的學(xué)習(xí)路線
1.3準(zhǔn)備工作
1.3.1教材配套開發(fā)板介紹
1.3.2開發(fā)環(huán)境準(zhǔn)備
1.3.3創(chuàng)建GD32F10x模板工程點(diǎn)亮一個(gè)LED
1.4小結(jié)
1.5練習(xí)題
1.6實(shí)驗(yàn): 更改模板工程軟件,點(diǎn)亮兩個(gè)LED
第2章GD32F10x的架構(gòu)(99min)
2.1圖靈機(jī)與計(jì)算機(jī)架構(gòu)
2.1.1圖靈機(jī)簡(jiǎn)介
2.1.2馮·諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)
2.1.3算術(shù)邏輯部件與鎖存器
2.2CortexM3架構(gòu)簡(jiǎn)介
2.2.1架構(gòu)總覽
2.2.2CortexM3的重點(diǎn)模塊
2.2.3ARM指令集與三級(jí)流水線
2.2.4存儲(chǔ)器映射
2.3GD32F10x對(duì)CortexM3架構(gòu)的實(shí)現(xiàn)
2.3.1總體架構(gòu)
2.3.2存儲(chǔ)器與映射
2.3.3啟動(dòng)配置
2.3.4電源控制
2.3.5復(fù)位
2.3.6時(shí)鐘控制
2.4小結(jié)
2.5練習(xí)題
第3章通用輸入/輸出端口GPIO(184min)
3.1芯片的常用封裝
3.2GPIO工作原理
3.2.1內(nèi)部結(jié)構(gòu)框圖
3.2.2輸出工作模式
3.2.3輸入工作模式
3.3GPIO主要寄存器簡(jiǎn)介
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小結(jié)
3.7練習(xí)題
3.8實(shí)驗(yàn): 物理按鍵軟件消抖
3.8.1實(shí)驗(yàn)?zāi)繕?biāo)
3.8.2實(shí)驗(yàn)方法分析
3.8.3實(shí)驗(yàn)代碼
3.8.4實(shí)驗(yàn)現(xiàn)象
第4章中斷和事件(107min)
4.1中斷的概念
4.2嵌套向量中斷控制器NVIC
4.2.1NVIC簡(jiǎn)介
4.2.2NVIC工作機(jī)制
4.2.3NVIC配置
4.3EXTI外部中斷/事件控制器
4.3.1EXTI簡(jiǎn)介
4.3.2EXTI原理
4.3.3EXTI通用IO映像
4.3.4EXTI使用方法
4.4EXTI外部中斷處理的常用庫函數(shù)簡(jiǎn)介
4.4.1初始化或使能相關(guān)函數(shù)
4.4.2EXTI外部中斷響應(yīng)處理相關(guān)函數(shù)
4.5中斷案例: 中斷式觸摸按鍵控制LED
4.5.1案例需求
4.5.2案例方法
4.5.3案例代碼
4.5.4效果分析
4.6小結(jié)
4.7練習(xí)題
4.8實(shí)驗(yàn): 上升沿和雙邊沿觸發(fā)的中斷
4.8.1實(shí)驗(yàn)?zāi)繕?biāo)
4.8.2實(shí)驗(yàn)方法分析
4.8.3實(shí)驗(yàn)代碼
4.8.4實(shí)驗(yàn)現(xiàn)象
第5章定時(shí)器(439min)
5.1理解定時(shí)器
5.1.1可編程定時(shí)/計(jì)數(shù)器
5.1.2理解GD32F10x的時(shí)鐘樹
5.2系統(tǒng)滴答定時(shí)器SysTick
5.2.1SysTick的工作原理
5.2.2SysTick的使用方法
5.2.3SysTick案例: SysTick控制LED閃爍
5.3實(shí)時(shí)時(shí)鐘
5.3.1RTC的原理
5.3.2常用庫函數(shù)
5.3.3RTC的使用方法
5.3.4RTC案例RTC日歷
5.4看門狗
5.4.1獨(dú)立看門狗
5.4.2窗口看門狗
5.4.3看門狗案例獨(dú)立看門狗使用示例
5.5定時(shí)器
5.5.1基本定時(shí)器
5.5.2通用定時(shí)器
5.5.3高級(jí)定時(shí)器
5.5.4定時(shí)器使用
5.6小結(jié)
5.7練習(xí)題
5.8實(shí)驗(yàn): PWM實(shí)現(xiàn)呼吸燈效果
5.8.1實(shí)驗(yàn)?zāi)繕?biāo)
5.8.2實(shí)驗(yàn)方法分析
5.8.3實(shí)驗(yàn)代碼
5.8.4實(shí)驗(yàn)現(xiàn)象
第6章通用同步/異步串行通信USART(160min)
6.1串行通信原理概述
6.1.1串行通信的硬件連接
6.1.2異步串行通信的數(shù)據(jù)幀
6.2GD32F10x的串口工作原理
6.2.1USART的結(jié)構(gòu)框圖
6.2.2利用庫函數(shù)設(shè)置和使用串口
6.3UART案例: 以串口查詢方式發(fā)送數(shù)據(jù)
6.3.1案例目標(biāo)
6.3.2案例方法
6.3.3案例代碼
6.3.4效果分析
6.4小結(jié)
6.5練習(xí)題
6.6UART實(shí)驗(yàn): UART的中斷式接收
6.6.1實(shí)驗(yàn)?zāi)繕?biāo)
6.6.2實(shí)驗(yàn)方法分析
6.6.3實(shí)驗(yàn)代碼
6.6.4實(shí)驗(yàn)現(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開始與停止?fàn)顟B(tài)
7.2.3時(shí)鐘同步和仲裁
7.2.4編程模型
7.2.5DMA模式下數(shù)據(jù)傳輸
7.2.6報(bào)文錯(cuò)誤校驗(yàn)
7.2.7狀態(tài)、錯(cuò)誤和中斷
7.3I2C案例: 軟件模擬I2C控制LM75AD
7.3.1案例目標(biāo)
7.3.2案例方法
7.3.3案例代碼
7.3.4效果分析
7.4小結(jié)
7.5練習(xí)題
7.6I2C實(shí)驗(yàn): 硬件I2C控制OLED屏顯示
7.6.1實(shí)驗(yàn)?zāi)繕?biāo)
7.6.2實(shí)驗(yàn)方法分析
7.6.3實(shí)驗(yàn)代碼
7.6.4實(shí)驗(yàn)現(xiàn)象
第8章串行外設(shè)SPI(252min)
8.1認(rèn)識(shí)SPI
8.1.1SPI協(xié)議原理概述
8.1.2一主一從的SPI通信過程
8.1.3一主多從的SPI連接方式
8.2GD32中的SPI外設(shè)
8.2.1功能框圖
8.2.2模式配置
8.3SPI案例: 軟件模擬SPI讀寫W25Qxx
8.3.1案例目標(biāo)
8.3.2案例方法
8.3.3案例代碼
8.3.4效果分析
8.4小結(jié)
8.5練習(xí)題
8.6SPI案例: 硬件SPI操作W25Q32
8.6.1實(shí)驗(yàn)?zāi)繕?biāo)
8.6.2實(shí)驗(yàn)方法分析
8.6.3實(shí)驗(yàn)代碼
8.6.4實(shí)驗(yàn)現(xiàn)象
第9章控制器局域網(wǎng)(170min)
9.1理解CAN
9.1.1CAN協(xié)議簡(jiǎn)介
9.1.2CAN協(xié)議的物理層
9.1.3CAN協(xié)議的數(shù)據(jù)鏈路層
9.1.4CAN的位同步
9.2GD32的CAN外設(shè)
9.2.1一般使用流程
9.2.2工作與通信模式
9.2.3數(shù)據(jù)收發(fā)
9.2.4過濾功能
9.2.5中斷
9.3小結(jié)
9.4練習(xí)題
9.5CAT實(shí)驗(yàn): 自回環(huán)通信模式案例
9.5.1實(shí)驗(yàn)?zāi)繕?biāo)
9.5.2實(shí)驗(yàn)方法分析
9.5.3實(shí)驗(yàn)代碼
9.5.4實(shí)驗(yàn)現(xiàn)象
第10章模數(shù)轉(zhuǎn)換器(142min)
10.1ADC一般概念
10.1.1模擬信號(hào)與數(shù)字信號(hào)
10.1.2模數(shù)原理概述
10.2GD32F10x的ADC外設(shè)
10.2.1ADC電源與時(shí)鐘
10.2.2ADC通道和轉(zhuǎn)換順序
10.2.3運(yùn)行模式
10.2.4采樣時(shí)間與外部觸發(fā)配置
10.3ADC庫函數(shù)的使用
10.3.1常用庫函數(shù)
10.3.2利用庫函數(shù)實(shí)現(xiàn)ADC步驟
10.4小結(jié)
10.5練習(xí)題
10.6ADC實(shí)驗(yàn): 測(cè)量光敏電阻的阻值
10.6.1實(shí)驗(yàn)?zāi)繕?biāo)
10.6.2實(shí)驗(yàn)方法分析
10.6.3實(shí)驗(yàn)代碼
10.6.4實(shí)驗(yàn)現(xiàn)象
第11章直接數(shù)據(jù)存儲(chǔ)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傳輸功能要點(diǎn)
11.3.3DMA流程解析
11.4小結(jié)
11.5練習(xí)題
11.6DMA實(shí)驗(yàn): DMA ADC搖桿用法
11.6.1實(shí)驗(yàn)?zāi)繕?biāo)
11.6.2實(shí)驗(yàn)方法分析
11.6.3實(shí)驗(yàn)代碼
11.6.4實(shí)驗(yàn)現(xiàn)象
第12章電機(jī)控制入門(248min)
12.1舵機(jī)
12.1.1構(gòu)成原理
12.1.2使用方法
12.1.3舵機(jī)案例: 旋轉(zhuǎn)編碼器控制舵機(jī)旋轉(zhuǎn)
12.2步進(jìn)電機(jī)
12.2.1工作原理
12.2.2步進(jìn)電機(jī)驅(qū)動(dòng)ULN2003
12.3小結(jié)
12.4練習(xí)題
12.5步進(jìn)電機(jī)實(shí)驗(yàn): 步進(jìn)電機(jī)正反轉(zhuǎn)控制
12.5.1實(shí)驗(yàn)?zāi)繕?biāo)
12.5.2實(shí)驗(yàn)方法分析
12.5.3實(shí)驗(yàn)代碼
12.5.4實(shí)驗(yàn)現(xiàn)象
參考文獻(xiàn)