本書從CortexM3處理器入手,主要講解其家族成員中較為常用的微處理器STM32。全書從STM基本I/O端口配置講起,深入淺出地介紹了該處理器的重要內(nèi)容,包括基本I/O端口、中斷、ADC、定時(shí)器等。5章給出了5個(gè)實(shí)際案例,有的案例來源于學(xué)生的電子設(shè)計(jì)大賽作品,有的案例來源于科研課題,例如平衡車設(shè)計(jì)、井下通信分站設(shè)計(jì)等。它們都較好地詮釋了STM32的典型應(yīng)用,可以快速地幫助讀者入門并動(dòng)手操作。 本書可作為電子、通信及控制等相關(guān)專業(yè)的參考書,也可以作為相關(guān)技術(shù)人員的參考資料。
《ARM Cortex-M3體系結(jié)構(gòu)與編程》系統(tǒng)論述了嵌入式微處理器ARM Cortex-M3(STM32)的原理、架構(gòu)、編程與項(xiàng)目開發(fā)。全書從最基本的I/O端口配置講起,依次介紹了中斷、串口通信、A/D轉(zhuǎn)換、定時(shí)器、CAN總線等基本功能,然后詳盡介紹了幾類典型的實(shí)際嵌入式系統(tǒng)項(xiàng)目的開發(fā)。全書給出了作者近年設(shè)計(jì)的5個(gè)實(shí)際項(xiàng)目:倒立擺設(shè)計(jì);能車設(shè)計(jì);平衡車設(shè)計(jì);電子秤設(shè)計(jì);井下通信分站設(shè)計(jì)。這些項(xiàng)目都提供了全部源代碼,可直接拿來二次開發(fā),用于課程設(shè)計(jì)或科研項(xiàng)目。本書配套提供了全部設(shè)計(jì)源代碼、設(shè)計(jì)圖紙及演示視頻,方便讀者學(xué)習(xí)使用。本書配有基礎(chǔ)的項(xiàng)目開發(fā)板;并提供學(xué)習(xí)交流QQ群,歡迎讀者參與進(jìn)來,和廣大的STM32愛好者共同學(xué)習(xí),及時(shí)解決設(shè)計(jì)中遇到的問題。
馮新宇 著名嵌入式培訓(xùn)講師,從事嵌入式系統(tǒng)開發(fā)和相關(guān)教學(xué)工作。曾主持或參與嵌入式相關(guān)課題與項(xiàng)目開發(fā)20余項(xiàng);近10年來一直作為指導(dǎo)教師參與全國電子設(shè)計(jì)大賽、飛思卡爾電子設(shè)計(jì)大賽、黑龍江省電子設(shè)計(jì)大賽等工作,所指導(dǎo)的學(xué)生多次獲得各種賽事重大獎(jiǎng)勵(lì)。
第1章ARM CortexM3核介紹
1.1CortexM3主要特性
1.2典型M3核處理器特性
1.2.1命令規(guī)則
1.2.2產(chǎn)品功能和外設(shè)配置
1.3習(xí)題
第2章開發(fā)環(huán)境搭建
2.1MDK安裝
2.2新建工程
2.3采用STLink調(diào)試仿真代碼
2.4習(xí)題
第3章基本I/O端口控制
3.1MDK新建工程
3.2MDK工程配置
3.3庫函數(shù)操作代碼分析
3.4時(shí)鐘配置
3.4.1時(shí)鐘樹
3.4.2時(shí)鐘源
3.4.3APB2外設(shè)時(shí)鐘使能寄存器(RCC_APB2ENR)
3.5I/O端口配置
3.5.1I/O基本情況
3.5.2GPIO配置寄存器描述
3.5.3端口輸出數(shù)據(jù)寄存器(GPIOx_ODR) (x= A…E)
3.6用庫函數(shù)操作流水燈
3.6.1GPIO_Init函數(shù)
3.6.2RCC_APB2PeriphClockCmd
3.6.3控制I/O輸出電平
3.6.4LED.h文件
3.6.5軟件調(diào)試易現(xiàn)問題
3.7使用庫函數(shù)法控制數(shù)碼管
3.7.1數(shù)碼管基礎(chǔ)知識
3.7.2硬件電路設(shè)計(jì)
3.7.3軟件說明
3.8簡單按鍵輸入
3.9習(xí)題
第4章中斷
4.1STM32中斷和異常
4.2STM32中斷相關(guān)的基本概念
4.2.1優(yōu)先級
4.2.2中斷控制器NVIC
4.2.3NVIC的優(yōu)先級組
4.3外部中斷
4.3.1外部中斷基本情況
4.3.2使用外部中斷的基本步驟
4.4習(xí)題
第5章串口通信
5.1串口通信基礎(chǔ)
5.1.1基本概念
5.1.2常用的串行通信接口
5.1.3應(yīng)用串行通信的數(shù)據(jù)采集結(jié)構(gòu)
5.2STM32串口操作
5.2.1寄存器方式操作串口
5.2.2庫函數(shù)方式操作串口
5.3習(xí)題
第6章直接寄存器訪問(DMA)
6.1DMA基礎(chǔ)知識
6.2STM32的DMA操作
6.2.1寄存器方式操作DMA
6.2.2庫函數(shù)方式操作DMA
6.2.3DMA操作實(shí)例
6.3習(xí)題
第7章模擬數(shù)字轉(zhuǎn)換(ADC)
7.1ADC基礎(chǔ)知識
7.1.1ADC主要特性
7.1.2ADC框圖及引腳分布
7.1.3通道選擇
7.1.4ADC的轉(zhuǎn)換模式
7.1.5ADC寄存器和固件庫函數(shù)列表
7.2STM32ADC操作
7.2.1寄存器方式操作ADC
7.2.2庫函數(shù)方式操作ADC
7.2.3ADC操作實(shí)例
7.3習(xí)題
第8章定時(shí)器
8.1定時(shí)器基礎(chǔ)知識
8.1.1高級定時(shí)器
8.1.2基本定時(shí)器
8.1.3通用定時(shí)器
8.2STM32定時(shí)器操作
8.2.1寄存器方式操作定時(shí)器
8.2.2庫函數(shù)方式操作定時(shí)器
8.2.3定時(shí)器操作實(shí)例
8.3習(xí)題
第9章CAN總線設(shè)計(jì)
9.1CAN總線基本工作原理
9.2CAN協(xié)議的特點(diǎn)
9.3CAN協(xié)議通信過程
9.4CAN的報(bào)文格式
9.4.1數(shù)據(jù)幀
9.4.2遙控幀
9.4.3錯(cuò)誤幀
9.4.4過載幀
9.4.5幀間隔
9.4.6優(yōu)先級的決定
9.5CAN總線錯(cuò)誤處理機(jī)制
9.5.1錯(cuò)誤狀態(tài)
9.5.2錯(cuò)誤檢測
9.6同步
9.6.1同步類型
9.6.2同步原則
9.7CAN總線拓?fù)浣Y(jié)構(gòu)
9.7.1STM32的CAN通信模塊
9.7.2CAN控制器MCP2515介紹
9.8CAN通信的軟件設(shè)計(jì)
9.8.1系統(tǒng)程序流程
9.8.2系統(tǒng)接收發(fā)送中斷處理
9.8.3CAN總線初始化配置
9.8.4報(bào)文的發(fā)送
9.8.5報(bào)文的接收
9.9CAN通信示例
9.10習(xí)題
第10章倒立擺設(shè)計(jì)
10.1設(shè)計(jì)內(nèi)容與實(shí)現(xiàn)指標(biāo)
10.1.1倒立擺的選擇
10.1.2系統(tǒng)設(shè)計(jì)指標(biāo)
10.2系統(tǒng)方案確定
10.2.1系統(tǒng)結(jié)構(gòu)組成
10.2.2系統(tǒng)模型分析
10.2.3系統(tǒng)控制方案確定
10.3系統(tǒng)硬件設(shè)計(jì)
10.4電機(jī)的選擇及驅(qū)動(dòng)電路的設(shè)計(jì)
10.4.1電機(jī)的選擇
10.4.2電機(jī)驅(qū)動(dòng)電路的設(shè)計(jì)
10.5測量電路設(shè)計(jì)
10.5.1擺桿角度測量電路的設(shè)計(jì)
10.5.2旋臂位置測量電路的設(shè)計(jì)
10.6通信電路的設(shè)計(jì)
10.6.1上位機(jī)通信電路的設(shè)計(jì)
10.6.2無線傳輸電路的設(shè)計(jì)
10.7輔助電路設(shè)計(jì)
10.7.1語音提示電路的設(shè)計(jì)
10.7.2電源電路的設(shè)計(jì)
10.8系統(tǒng)軟件設(shè)計(jì)
10.8.1系統(tǒng)控制程序設(shè)計(jì)
10.8.2起擺程序設(shè)計(jì)
10.8.3PID控制程序設(shè)計(jì)
10.8.4電機(jī)驅(qū)動(dòng)程序設(shè)計(jì)
10.8.5上位機(jī)通信程序設(shè)計(jì)
10.8.6無線通信程序設(shè)計(jì)
10.9作品的制作與調(diào)試
10.9.1倒立擺機(jī)械結(jié)構(gòu)的制作問題
10.9.2PCB設(shè)計(jì)應(yīng)注意的問題
10.9.3電路板的制作問題
10.10PID參數(shù)的整定
10.10.1比例參數(shù)整定
10.10.2積分參數(shù)整定
10.10.3微分參數(shù)整定
10.11習(xí)題
第11章智能小車設(shè)計(jì)
11.1硬件電路設(shè)計(jì)
11.1.1硬件系統(tǒng)方案設(shè)計(jì)
11.1.2最小系統(tǒng)電路設(shè)計(jì)
11.1.3電源電路設(shè)計(jì)
11.1.4電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)
11.1.5環(huán)境檢測傳感器電路設(shè)計(jì)
11.2人機(jī)交互電路設(shè)計(jì)
11.2.1OLED顯示電路設(shè)計(jì)
11.2.2紅外遙控電路設(shè)計(jì)
11.2.3蜂鳴器提示電路設(shè)計(jì)
11.3總體軟件設(shè)計(jì)
11.3.1道路基準(zhǔn)采集模式軟件
11.3.2PID尋跡模式軟件
11.3.3迷宮模式軟件
11.3.4OLED顯示軟件設(shè)計(jì)
11.4PID控制軟件設(shè)計(jì)
11.4.1PID介紹
11.4.2比例(P)控制器
11.4.3比例積分(PI)控制器
11.4.4比例微分(PD)控制器
11.4.5比例積分微分(PID)控制器
11.4.6PID尋跡
11.5迷宮算法設(shè)計(jì)
11.5.1左手法
11.5.2迷宮搜索
11.5.3迷宮最短路徑算法
11.6設(shè)計(jì)測量方法與數(shù)據(jù)處理
11.6.1傳感器分布
11.6.2五路模擬傳感器數(shù)據(jù)測量
11.7傳感器軟件濾波
11.7.1軟件濾波處理介紹
11.7.2軟件濾波的方法
11.8調(diào)試方法
11.8.1PID參數(shù)調(diào)試
11.8.2迷宮模式調(diào)試
11.9習(xí)題
第12章平衡車設(shè)計(jì)
12.1硬件電路設(shè)計(jì)
12.1.1硬件系統(tǒng)方案設(shè)計(jì)
12.1.2環(huán)境檢測傳感器電路設(shè)計(jì)
12.2人機(jī)交互電路設(shè)計(jì)
12.3MPU6050使用方法
12.3.1引腳說明
12.3.2SMPRT_DIV寄存器
12.3.3CONFIG寄存器
12.3.4GYRO_CONFIG寄存器
12.3.5ACCEL_CONFIG寄存器
12.3.6加速度計(jì)測量寄存器
12.3.7TEMP_OUT_H和TEMP_OUT_L寄存器
12.3.8陀螺儀測量寄存器
12.3.9PWR_MGMT_1寄存器
12.3.10WHO_AM_I寄存器
12.4總體軟件設(shè)計(jì)
12.4.1車身狀態(tài)采集模式軟件
12.4.2PID車身保持模式軟件
12.4.3人機(jī)交互模式軟件設(shè)計(jì)
12.4.4卡爾曼濾波算法
12.5習(xí)題
第13章電子秤設(shè)計(jì)
13.1設(shè)計(jì)指標(biāo)
13.2設(shè)計(jì)方案
13.3硬件電路設(shè)計(jì)說明
13.3.1主控制器相關(guān)電路
13.3.2TFT液晶屏相關(guān)電路設(shè)計(jì)
13.3.3AD芯片HX711相關(guān)電路設(shè)計(jì)
13.3.4WT588D語音模塊相關(guān)電路設(shè)計(jì)
13.3.5稱重傳感器相關(guān)電路設(shè)計(jì)
13.4軟件設(shè)計(jì)思路及代碼分析
13.4.1TFT觸控液晶模塊部分
13.4.2WT588D語音模塊部分
13.4.3HX711芯片部分
13.4.4DS18B20芯片部分
13.4.5數(shù)據(jù)計(jì)算部分
13.5習(xí)題
第14章井下通信分站設(shè)計(jì)
14.1硬件電路設(shè)計(jì)
14.1.1監(jiān)控分站主要設(shè)計(jì)目標(biāo)及參數(shù)
14.1.2硬件電路設(shè)計(jì)方案
14.2軟件方案設(shè)計(jì)
14.2.1軟件總體程序的思路
14.2.2RS485接口的使用及程序流程
14.2.3CAN數(shù)據(jù)傳輸
14.2.4OLED顯示
14.2.5鍵盤輸入
14.3習(xí)題
參考文獻(xiàn)