本書從CortexM3處理器入手,主要講解其家族成員中較為常用的微處理器STM32。全書從STM基本I/O端口配置講起,深入淺出地介紹了該處理器的重要內容,包括基本I/O端口、中斷、ADC、定時器等。5章給出了5個實際案例,有的案例來源于學生的電子設計大賽作品,有的案例來源于科研課題,例如平衡車設計、井下通信分站設計等。它們都較好地詮釋了STM32的典型應用,可以快速地幫助讀者入門并動手操作。 本書可作為電子、通信及控制等相關專業的參考書,也可以作為相關技術人員的參考資料。
《ARM Cortex-M3體系結構與編程》系統論述了嵌入式微處理器ARM Cortex-M3(STM32)的原理、架構、編程與項目開發。全書從最基本的I/O端口配置講起,依次介紹了中斷、串口通信、A/D轉換、定時器、CAN總線等基本功能,然后詳盡介紹了幾類典型的實際嵌入式系統項目的開發。全書給出了作者近年設計的5個實際項目:倒立擺設計;能車設計;平衡車設計;電子秤設計;井下通信分站設計。這些項目都提供了全部源代碼,可直接拿來二次開發,用于課程設計或科研項目。本書配套提供了全部設計源代碼、設計圖紙及演示視頻,方便讀者學習使用。本書配有基礎的項目開發板;并提供學習交流QQ群,歡迎讀者參與進來,和廣大的STM32愛好者共同學習,及時解決設計中遇到的問題。
馮新宇 著名嵌入式培訓講師,從事嵌入式系統開發和相關教學工作。曾主持或參與嵌入式相關課題與項目開發20余項;近10年來一直作為指導教師參與全國電子設計大賽、飛思卡爾電子設計大賽、黑龍江省電子設計大賽等工作,所指導的學生多次獲得各種賽事重大獎勵。
第1章ARM CortexM3核介紹
1.1CortexM3主要特性
1.2典型M3核處理器特性
1.2.1命令規則
1.2.2產品功能和外設配置
1.3習題
第2章開發環境搭建
2.1MDK安裝
2.2新建工程
2.3采用STLink調試仿真代碼
2.4習題
第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端口輸出數據寄存器(GPIOx_ODR) (x= A…E)
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簡單按鍵輸入
3.9習題
第4章中斷
4.1STM32中斷和異常
4.2STM32中斷相關的基本概念
4.2.1優先級
4.2.2中斷控制器NVIC
4.2.3NVIC的優先級組
4.3外部中斷
4.3.1外部中斷基本情況
4.3.2使用外部中斷的基本步驟
4.4習題
第5章串口通信
5.1串口通信基礎
5.1.1基本概念
5.1.2常用的串行通信接口
5.1.3應用串行通信的數據采集結構
5.2STM32串口操作
5.2.1寄存器方式操作串口
5.2.2庫函數方式操作串口
5.3習題
第6章直接寄存器訪問(DMA)
6.1DMA基礎知識
6.2STM32的DMA操作
6.2.1寄存器方式操作DMA
6.2.2庫函數方式操作DMA
6.2.3DMA操作實例
6.3習題
第7章模擬數字轉換(ADC)
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操作實例
7.3習題
第8章定時器
8.1定時器基礎知識
8.1.1高級定時器
8.1.2基本定時器
8.1.3通用定時器
8.2STM32定時器操作
8.2.1寄存器方式操作定時器
8.2.2庫函數方式操作定時器
8.2.3定時器操作實例
8.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通信示例
9.10習題
第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微分參數整定
10.11習題
第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迷宮模式調試
11.9習題
第12章平衡車設計
12.1硬件電路設計
12.1.1硬件系統方案設計
12.1.2環境檢測傳感器電路設計
12.2人機交互電路設計
12.3MPU6050使用方法
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卡爾曼濾波算法
12.5習題
第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數據計算部分
13.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鍵盤輸入
14.3習題
參考文獻