編輯推薦
本書係統論述瞭嵌入式微處理器ARM Cortex-M3(STM32)的原理、架構、編程與項目開發。全書從最基本的I/O端口配置講起,依次介紹瞭中斷、串口通信、A/D轉換、定時器、CAN總綫等基本功能,然後詳盡介紹瞭幾類典型的實際嵌入式係統項目的開發。全書給齣瞭作者近年設計的5個實際項目:
? 倒立擺設計;
? 能車設計;
? 平衡車設計;
? 電子秤設計;
? 井下通信分站設計。
這些項目都提供瞭全部源代碼,可直接拿來二次開發,用於課程設計或科研項目。本書配套提供瞭全部設計源代碼、設計圖紙及演示視頻,方便讀者學習使用。本書配有基礎的項目開發闆;並提供學習交流QQ群,歡迎讀者參與進來,和廣大的STM32愛好者共同學習,及時解決設計中遇到的問題。
內容簡介
《清華開發者書庫:ARM Cortex-M3體係結構與編程(第2版)》從Cortex-M3處理器入手,詳細闡述瞭STM32微控製器的用法。
《清華開發者書庫:ARM Cortex-M3體係結構與編程(第2版)》從編程軟件的使用、STM32的IO口配置講起,深入淺齣地介紹瞭該處理器的重要內容,主要包括基本IO接口、中斷、ADC、定時器等。最後幾章給齣瞭多個案例,有的來源於學生的電子設計大賽作品,有的來源於科研課題,如平衡車設計、井下通信分站設計、四鏇翼飛行器設計等,都較好地詮釋瞭STM32的典型應用,可以幫助讀者快速地入門並且上手操作。最後一章給齣幾個設計案例思路,讀者在綜閤前麵的學習後,可以自行設計作品,達到活學活用的目的。
《清華開發者書庫:ARM Cortex-M3體係結構與編程(第2版)》配套全部設計電路圖、源代碼和PPT素材以及在綫答疑等,方便讀者學習。
《清華開發者書庫:ARM Cortex-M3體係結構與編程(第2版)》可作為電子、通信及控製等相關專業的參考書,也可以作為相關技術人員的技術參考書。
作者簡介
馮新宇, 1978—,黑龍江科技大學副教授,長期從事嵌入式係統項目開發和相關教學工作。曾主持或參與嵌入式相關課題與項目開發20餘項;近10年來一直作為指導教師參與全國電子設計大賽、飛思卡爾電子設計大賽、黑龍江省電子設計大賽等工作,所指導的學生多次獲得各種賽事重大奬勵。個人代錶性著作有《ADS2009射頻電路設計與仿真》《ARM 9嵌入式開發基礎與實例進階》與《四鏇翼無人飛行器設計》)。
內頁插圖
目錄
第2版前言Ⅰ
第1版前言Ⅲ
學習說明Ⅴ
第1章ARM Cortex�睲3核介紹
1.1Cortex�睲3主要特性
1.2典型M3核處理器特性
1.2.1命名規則
1.2.2産品功能和外設配置
習題
第2章開發環境搭建
2.1MDK安裝
2.2新建工程
2.3采用ST�睱ink調試仿真代碼
習題
第3章基本I/O端口控製
3.1MDK新建工程
3.2MDK工程配置
3.3寄存器法操作代碼分析
3.4時鍾配置
3.4.1時鍾樹
3.4.2時鍾源
3.4.3APB2外設時鍾使能寄存器(RCC_APB2ENR)
3.5I/O端口配置
3.5.1I/O基本情況
3.5.2GPIO配置寄存器描述
3.5.3端口輸齣數據寄存器
3.6用庫函數操作流水燈
3.6.1GPIO_Init函數
3.6.2RCC_APB2PeriphClockCmd
3.6.3控製I/O輸齣電平
3.6.4LED.h文件
3.6.5軟件調試易現問題
3.7使用庫函數法控製數碼管
3.7.1數碼管基礎知識
3.7.2硬件電路設計
3.7.3軟件說明
3.8簡單按鍵輸入
習題
第4章中斷
4.1STM32中斷和異常
4.2STM32中斷相關的基本概念
4.2.1優先級
4.2.2中斷控製器NVIC
4.2.3NVIC的優先級組
4.3外部中斷
4.3.1外部中斷基本情況
4.3.2使用外部中斷的基本步驟
習題
第5章串口通信
5.1串口通信基礎
5.1.1基本概念
5.1.2常用的串行通信接口
5.1.3應用串行通信的數據采集結構
5.2STM32串口操作
5.2.1寄存器方式操作串口
5.2.2庫函數方式操作串口
習題
第6章直接寄存器訪問
6.1DMA基礎知識
6.2STM32的DMA操作
6.2.1寄存器方式操作DMA
6.2.2庫函數方式操作DMA
6.2.3DMA操作實例
習題
第7章模擬/數字轉換器
7.1ADC基礎知識
7.1.1ADC主要特性
7.1.2ADC框圖及引腳分布
7.1.3通道選擇
7.1.4ADC的轉換模式
7.1.5ADC寄存器和固件庫函數列錶
7.2STM32ADC操作
7.2.1寄存器方式操作ADC
7.2.2庫函數方式操作ADC
7.2.3ADC操作實例
習題
第8章定時器
8.1定時器基礎知識
8.1.1高級定時器
8.1.2基本定時器
8.1.3通用定時器
8.2STM32定時器操作
8.2.1寄存器方式操作定時器
8.2.2庫函數方式操作定時器
8.2.3定時器操作實例
習題
第9章CAN總綫設計
9.1CAN總綫基本工作原理
9.2CAN協議的特點
9.3CAN協議通信過程
9.4CAN的報文格式
9.4.1數據幀
9.4.2遙控幀
9.4.3錯誤幀
9.4.4過載幀
9.4.5幀間隔
9.4.6優先級的決定
9.5CAN總綫錯誤處理機製
9.5.1錯誤狀態
9.5.2錯誤檢測
9.6同步
9.6.1同步類型
9.6.2同步原則
9.7CAN總綫拓撲結構
9.7.1STM32的CAN通信模塊
9.7.2CAN控製器MCP2515介紹
9.8CAN通信的軟件設計
9.8.1係統程序流程
9.8.2係統接收發送中斷處理
9.8.3CAN總綫初始化配置
9.8.4報文的發送
9.8.5報文的接收
9.9CAN通信示例
習題
第10章倒立擺設計
10.1設計內容與實現指標
10.1.1倒立擺的選擇
10.1.2係統設計指標
10.2係統方案確定
10.2.1係統結構組成
10.2.2係統模型分析
10.2.3係統控製方案確定
10.3係統硬件設計
10.4電機的選擇及驅動電路的設計
10.4.1電機的選擇
10.4.2電機驅動電路的設計
10.5測量電路設計
10.5.1擺杆角度測量電路的設計
10.5.2鏇臂位置測量電路的設計
10.6通信電路的設計
10.6.1上位機通信電路的設計
10.6.2無綫傳輸電路的設計
10.7輔助電路設計
10.7.1語音提示電路的設計
10.7.2電源電路的設計
10.8係統軟件設計
10.8.1係統控製程序設計
10.8.2起擺程序設計
10.8.3PID控製程序設計
10.8.4電機驅動程序設計
10.8.5上位機通信程序設計
10.8.6無綫通信程序設計
10.9作品的製作與調試
10.9.1倒立擺機械結構的製作問題
10.9.2PCB設計應注意的問題
10.9.3電路闆的製作問題
10.10PID參數的整定
10.10.1比例參數整定
10.10.2積分參數整定
10.10.3微分參數整定
習題
第11章智能小車設計
11.1硬件電路設計
11.1.1硬件係統方案設計
11.1.2最小係統電路設計
11.1.3電源電路設計
11.1.4電機驅動電路設計
11.1.5環境檢測傳感器電路設計
11.2人機交互電路設計
11.2.1OLED顯示電路設計
11.2.2紅外遙控電路設計
11.2.3蜂鳴器提示電路設計
11.3總體軟件設計
11.3.1道路基準采集模式軟件
11.3.2PID尋跡模式軟件
11.3.3迷宮模式軟件
11.3.4OLED顯示軟件設計
11.4PID控製軟件設計
11.4.1PID介紹
11.4.2比例(P)控製器
11.4.3比例積分(PI)控製器
11.4.4比例微分(PD)控製器
11.4.5比例積分微分(PID)控製器
11.4.6PID尋跡
11.5迷宮算法設計
11.5.1左手法
11.5.2迷宮搜索
11.5.3迷宮最短路徑算法
11.6設計測量方法與數據處理
11.6.1傳感器分布
11.6.2五路模擬傳感器數據測量
11.7傳感器軟件濾波
11.7.1軟件濾波處理介紹
11.7.2軟件濾波的方法
11.8調試方法
11.8.1PID參數調試
11.8.2迷宮模式調試
習題
第12章平衡車設計
12.1硬件電路設計
12.1.1硬件係統方案設計
12.1.2環境檢測傳感器電路設計
12.2人機交互電路設計
12.3MPU��6050使用方法
12.3.1引腳說明
12.3.2SMPRT_DIV寄存器
12.3.3CONFIG寄存器
12.3.4GYRO_CONFIG寄存器
12.3.5ACCEL_CONFIG寄存器
12.3.6加速度計測量寄存器
12.3.7TEMP_OUT_H和TEMP_OUT_L寄存器
12.3.8陀螺儀測量寄存器
12.3.9PWR_MGMT_1寄存器
12.3.10WHO_AM_I寄存器
12.4總體軟件設計
12.4.1車身狀態采集模式軟件
12.4.2PID車身保持模式軟件
12.4.3人機交互模式軟件設計
12.4.4卡爾曼濾波算法
習題
第13章電子秤設計
13.1設計指標
13.2設計方案
13.3硬件電路設計說明
13.3.1主控製器相關電路
13.3.2TFT液晶屏相關電路設計
13.3.3AD芯片HX711相關電路設計
13.3.4WT588D語音模塊相關電路設計
13.3.5稱重傳感器相關電路設計
13.4軟件設計思路及代碼分析
13.4.1TFT觸控液晶模塊部分
13.4.2WT588D語音模塊部分
13.4.3HX711芯片部分
13.4.4DS18B20芯片部分
13.4.5數據計算部分
習題
第14章井下通信分站設計
14.1硬件電路設計
14.1.1監控分站主要設計目標及參數
14.1.2硬件電路設計方案
14.2軟件方案設計
14.2.1軟件總體程序的思路
14.2.2RS485接口的使用及程序流程
14.2.3CAN數據傳輸
14.2.4OLED顯示
14.2.5鍵盤輸入
習題
第15章無綫電能功率傳輸係統的設計
15.1設計內容與實現指標
15.1.1設計內容
15.1.2係統設計指標
15.2無綫電能傳輸的基本原理分析
15.2.1無綫電能傳輸的耦閤方式
15.2.2磁諧振耦閤式無綫電能傳輸的基本原理
15.2.3磁場諧振式無綫電能傳輸係統的組成
15.2.4實現傳輸的關鍵裝置
15.3無綫電能傳輸的特性
15.3.1頻率特性對無綫電能傳輸係統的影響
15.3.2能量發射綫圈設計對無綫電能傳輸係統的影響
15.3.3電容補償對無綫能量傳輸係統性能的影響
15.4係統方案確定及電路設計
15.4.1係統結構組成
15.4.2主要拓撲電路的選擇與設計
15.4.3MOS管驅動設計
15.4.4綫圈和電容的設計
15.4.5接收端高頻整流的設計
15.4.6控製電路的設計
15.4.7程序的設計
15.5調試與驗證
15.5.1係統的調試
15.5.2測量結果與結論分析
習題
第16章四鏇翼飛行器設計
16.1四鏇翼飛行器的結構
16.2四鏇翼飛行器的運動控製方法
16.3四鏇翼飛行器各部分的工作原理
16.3.1飛行姿態與升力關係
16.3.2飛行姿態的測量
16.3.3加速度傳感器工作原理及角度測量
16.3.4陀螺儀傳感器工作原理及角度測量
16.3.5磁力計傳感器工作原理及測量方法
16.4硬件設計
16.4.1總體設計
16.4.2飛行器主控電路最小係統設計
16.4.3姿態傳感器模塊
16.4.4無綫通信模塊
16.4.5定高模塊
16.4.6電機及驅動模塊
16.4.7遙控器模塊
16.4.8電源模塊選擇
16.4.9四軸飛行器的組裝
16.5軟件設計
16.5.1軟件預備知識
16.5.2主控程序初始化設置及說明
16.5.3姿態傳感器軟件設計
16.5.4氣壓計軟件設計
16.5.5遙控器軟件設計
16.6調試、問題解析及改進方嚮隨想
習題
第17章案例設計
17.1STM32的無綫傳輸係統
17.1.1設計任務
17.1.2係統結構組成
17.1.3主要設計思路
17.2風力擺控製係統設計
17.2.1設計任務
17.2.2係統結構組成
17.2.3主要設計思路
習題
參考文獻
精彩書摘
第3章
基本I/O端口控製
學習STM32之前,建議有8位單片機的學習基礎,例如51單片機、AMEG8等,這對於學習新的Cortex�睲3處理器有很大幫助。在第2章已經安裝好瞭MDK軟件,版本為V4.72,STM32設計操作包括直接寄存器操作和庫函數操作,直接寄存器操作與51單片機控製很接近,庫函數操作與學過8位控製器的讀者來說有很大的不同,開始閱讀本章的讀者可能會比較睏惑,不要著急,稍後會詳細介紹庫的含義和使用方法。接下來通過一個簡單的寄存器操作對STM32有個初步地介紹,就從流水燈開始STM32的學習之旅吧。
3.1MDK新建工程
(1) 單擊桌麵UVision4圖標,啓動軟件。如果是第一次使用會打開一個自帶的工程文件,可以通過工具欄Project→Close Project選項關掉。
(2) 新建的工程文件保存在一個文件夾裏麵。首先創建一個名為“流水燈”的文件夾,在“流水燈”文件夾裏建幾個文件夾: Doc、Libraries、 Listing、 Output 、Project、 User(為瞭使讀者先有個感性認識,可以參考書中附帶的例子,從例子中添加這些代碼,後續會陸續解釋其含義),工程“流水燈”文件夾的子文件夾如圖3��1所示。
圖3��1流水燈工程的子文件夾
① Doc用來存放一些說明文檔,一般文件格式為XXX.TXT。
② Libraries用來存放ST庫最核心的文件,包含FWlib和CMSIS兩個文件夾。
FWlib用來存放STM32庫裏的inc和src兩個文件,這兩個文件包含瞭芯片上的所有驅動。
inc和src兩個文件夾也是直接從ST的庫裏復製過來的。
inc裏是ST片上資源的驅動頭文件,如果用到某個資源,則必須把相應的頭文件包含進來。
src裏是ST片上資源的驅動文件,這些驅動涉及瞭大量的C語言知識,是學習庫的重點。
CMSIS用來存放庫自帶的啓動文件和一些M3係列通用的文件。CMSIS存放的文件適閤任何M3內核的單片機。CMSIS為Cortex Microcontroller Software Interface Standard的縮寫,是ARM Cortex微控製器軟件接口標準,是ARM公司為芯片廠商提供的一套通用且獨立於芯片廠商的處理器軟件接口。
③ Listing用來保存編譯後生成的鏈接文件。
④ Output用來保存軟件編譯後輸齣的文件。
⑤ Project建立工程文件的路徑。
⑥ User用來存放用戶編寫的驅動文件。
(3) 在工具欄Project→New μVision Project,新建工程文件,如圖3��2所示。
圖3��2Project新建工程
(4) 在Project文件夾裏創建一個工程,名字為liushuideng,如圖3��3所示。
圖3��3Project中新建liushuideng
(5) 選擇芯片的型號,本書使用的芯片是ST公司的STM32F103RC。選擇窗口如圖3��4所示。
圖3��4器件選擇窗口
(6) 接下來詢問是否需要復製STM32的啓動代碼到工程文件中,這個啓動代碼在M3係列中都是適用的,一般情況下單擊“是”按鈕,這裏用的是ST庫,庫文件也自帶瞭一份啓動代碼,為瞭保持庫的完整性,就不需要開發環境自帶的啓動代碼瞭,稍後手動添加啓動代碼,這裏單擊“否”按鈕,如圖3��5所示。
圖3��5STM32啓動代碼是否復製到工程文件中的詢問對話框
(7) 此時工程新建成功,打開如圖3��6所示的界麵。工程中還沒有任何文件,接下來在工程中添加所需文件。
圖3��6新建工程成功後的界麵
(8) 把Target1的名稱改為“流水燈”,其實不改也可以,改瞭隻是為瞭見名知義,如圖3��7所示綫條圈齣部分。
圖3��7Target1改為“流水燈”
(9) 往工程裏麵添加5個組文件夾,並命名為STARTUP、CMSIS、FWLIB、USER、DOC。選擇Add Group,如圖3��8、圖3��9所示。
圖3��8Add Group界麵
圖3��9添加文件夾界麵
從名字就可以看得齣是用它來存放啓動代碼,USER用來存放用戶自定義的應用程序,FWLIB用來存放庫文件,CMSIS用來存放M3係列單片機通用的文件。
(10) 接下來往這些新建的組中添加文件,雙擊哪個組就可以往哪個組裏添加文件,如果該組已經有文件,雙擊則把組裏的文件都顯示齣來,然後再雙擊該組,可以繼續添加文件。
在對話框的文件類型裏選擇ALL files(*.*),否則有些文件會顯示不齣來,如圖3��10所示。
圖3��10新建組中添加文件
① 在STARTCOKE裏添加startup_stm32f10x_hd.s。
② 在USER組裏添加main.c、stm32f10x_it.c兩個文件。
其中,stm32f10x_conf.h、stm32f10x_it.h兩個頭文件不需要添加,即使添加也添加不進來,因為.h文件不是通過這種方式進入到工程裏麵的。頭文件都包含在.c文件中,當編譯工程時,.h文件就自然包含進來瞭。
③ 在FWLIB組裏添加src裏的全部驅動文件,當然,src的驅動文件也可以需要哪個就添加哪個。這裏將它們全部添加進去是為瞭後續開發
方便,況且可以通過配置stm32f10x_conf.h頭文件來選擇性添加,隻有在stm32f10x_conf.h文件中配置的文件纔會被編譯。
清華開發者書庫:ARM Cortex-M3體係結構與編程(第2版) epub pdf mobi txt 電子書 下載 2024
清華開發者書庫:ARM Cortex-M3體係結構與編程(第2版) 下載 epub mobi pdf txt 電子書