本書介紹了意法半導(dǎo)體(STMicroelectronics,ST)公司的32位基于ARM Cortex-M3內(nèi)核的STM32單片機原理與實踐。本書以培養(yǎng)學(xué)生的動手能力和增強學(xué)生的工程素養(yǎng)為目的,按照項目驅(qū)動的思路展開教學(xué)與實踐學(xué)習(xí),以自制的開發(fā)板上的程序為實例,將STM32單片機的外圍引腳特性、內(nèi)部結(jié)構(gòu)原理、片上外設(shè)資源、開發(fā)設(shè)計方法和應(yīng)用軟件編程、μC/OS-Ⅱ操作系統(tǒng)原理及應(yīng)用等知識傳授給讀者。
第1章嵌入式系統(tǒng)概述
1.1嵌入式系統(tǒng)簡介
1.1.1嵌入式系統(tǒng)定義
1.1.2嵌入式系統(tǒng)特點
1.1.3嵌入式系統(tǒng)分類
1.1.4嵌入式系統(tǒng)發(fā)展
1.2ARM體系結(jié)構(gòu)及微處理器系列
1.2.1ARM公司簡介
1.2.2ARM體系結(jié)構(gòu)簡介
1.3Cortex-M系列處理器簡介
1.4STM32系列微控制器簡介
1.5STM32教學(xué)開發(fā)板
第2章Cortex-M3體系結(jié)構(gòu)
2.1CM3微處理器核結(jié)構(gòu) 第1章嵌入式系統(tǒng)概述
1.1嵌入式系統(tǒng)簡介
1.1.1嵌入式系統(tǒng)定義
1.1.2嵌入式系統(tǒng)特點
1.1.3嵌入式系統(tǒng)分類
1.1.4嵌入式系統(tǒng)發(fā)展
1.2ARM體系結(jié)構(gòu)及微處理器系列
1.2.1ARM公司簡介
1.2.2ARM體系結(jié)構(gòu)簡介
1.3Cortex-M系列處理器簡介
1.4STM32系列微控制器簡介
1.5STM32教學(xué)開發(fā)板
第2章Cortex-M3體系結(jié)構(gòu)
2.1CM3微處理器核結(jié)構(gòu)
2.2處理器的工作模式及狀態(tài)
2.3寄存器
2.4總線接口
2.5存儲器的組織與映射
2.5.1存儲器格式
2.5.2存儲器層次結(jié)構(gòu)
2.5.3CM3存儲器組織
2.5.4STM32存儲器映射
2.5.5位綁定操作
2.6指令集
2.6.1ARM指令集
2.6.2Thumb指令集
2.6.3Thumb-2指令集
2.7流水線
2.8異常和中斷
2.9存儲器保護(hù)單元MPU
2.10STM32微控制器概述
2.10.1STM32命名
2.10.2STM32內(nèi)部資源
第3章STM32最小系統(tǒng)
3.1電源電路
3.1.1供電方案
3.1.2電源管理器
3.1.3低功耗模式
3.2時鐘電路
3.2.1HSE時鐘和HSI時鐘
3.2.2PLL
3.2.3LSE時鐘和LSI時鐘
3.2.4系統(tǒng)時鐘SYSCLK
3.2.5RCC寄存器
3.3復(fù)位電路
3.4STM32啟動
3.5程序下載電路
3.6STM32最小系統(tǒng)
第4章STM32程序設(shè)計
4.1嵌入式軟件層次結(jié)構(gòu)
4.2Cortex微控制器軟件接口標(biāo)準(zhǔn)
4.3FWLib固件庫
4.3.1STM32標(biāo)準(zhǔn)外設(shè)庫
4.3.2固件庫命名規(guī)則
4.3.3數(shù)據(jù)類型和結(jié)構(gòu)
4.3.4固件庫的應(yīng)用
4.4嵌入式C程序特點
4.5開發(fā)環(huán)境簡介
第5章GPIO原理及應(yīng)用
5.1GPIO的硬件結(jié)構(gòu)和功能
5.1.1GPIO硬件結(jié)構(gòu)
5.1.2復(fù)用功能
5.1.3GPIO輸入功能
5.1.4GPIO輸出功能
5.1.5GPIO速度選擇
5.1.6鉗位功能
5.2GPIO寄存器
5.3GPIO庫函數(shù)
5.4庫函數(shù)和寄存器的關(guān)系
5.5應(yīng)用實例
第6章EXTI原理及應(yīng)用
6.1STM32中斷通道
6.2STM32中斷的過程
6.3NVIC硬件結(jié)構(gòu)及軟件配置
6.3.1NVIC硬件結(jié)構(gòu)
6.3.2STM32中斷優(yōu)先級
6.3.3中斷向量表
6.3.4NVIC寄存器
6.3.5NVIC庫結(jié)構(gòu)
6.4EXTI硬件結(jié)構(gòu)及軟件配置
6.4.1EXTI硬件結(jié)構(gòu)
6.4.2中斷及事件
6.4.3EXTI中斷通道和中斷源
6.4.4EXTI寄存器
6.4.5EXTI庫函數(shù)
6.5應(yīng)用實例
6.5.1按鍵中斷
6.5.2中斷嵌套案例1
6.5.3中斷嵌套案例2
第7章USART原理及應(yīng)用
7.1端口重映射
7.2USART功能和結(jié)構(gòu)
7.2.1USART功能
7.2.2USART結(jié)構(gòu)
7.3USART幀格式
7.4波特率設(shè)置
7.5硬件流控制
7.6USART中斷請求
7.7USART寄存器
7.8USART庫函數(shù)
7.9USART應(yīng)用實例
7.9.1直接傳送方式
7.9.2中斷傳送方式
7.9.3串口Echo回應(yīng)程序
7.9.4利用printf()的串口編程
第8章定時器原理及應(yīng)用
8.1STM32定時器概述
8.2通用定時器TIMx功能
8.3通用定時器TIMx結(jié)構(gòu)
8.3.1時鐘源選擇
8.3.2時基單元
8.3.3捕獲和比較通道
8.3.4計數(shù)器模式
8.3.5定時時間的計算
8.3.6定時器中斷
8.4通用定時器TIMx寄存器
8.5通用定時器TIMx庫函數(shù)
8.6TIM2應(yīng)用實例
8.6.1秒表
8.6.2輸出比較案例1
8.6.3輸出比較案例2
8.6.4PWM輸出
8.6.5PWM輸入捕獲
8.7RTC的功能及結(jié)構(gòu)
8.7.1RTC的基本功能
8.7.2RTC的內(nèi)部結(jié)構(gòu)
8.8RTC控制寄存器
8.9備份寄存器
8.10電源控制寄存器
8.11RTC相關(guān)的RCC寄存器
8.12RTC應(yīng)用實例
8.13系統(tǒng)時鐘SysTick簡介
8.14SysTick寄存器
8.14.1控制及狀態(tài)寄存器(SYSTICKCSR)
8.14.2重載寄存器(SYSTICKRVR)
8.14.3當(dāng)前值寄存器(SYSTICKCVR)
8.14.4校準(zhǔn)值寄存器(SYSTICKCALVR)
8.15SysTick應(yīng)用實例
第9章DMA原理及應(yīng)用
9.1DMA簡介
9.2DMA的功能及結(jié)構(gòu)
9.2.1DMA的功能
9.2.2DMA結(jié)構(gòu)
9.3DMA寄存器
9.4DMA庫函數(shù)
第10章ADC原理及應(yīng)用
10.1ADC的功能及結(jié)構(gòu)
10.2ADC的工作模式
10.3數(shù)據(jù)對齊
10.4ADC中斷
10.5ADC寄存器
10.6ADC庫函數(shù)
10.7應(yīng)用實例
第11章μC/OS-II嵌入式操作系統(tǒng)基礎(chǔ)
11.1操作系統(tǒng)的功能
11.2操作系統(tǒng)的基本概念
11.2.1進(jìn)程和線程
11.2.2實時操作系統(tǒng)RTOS
11.2.3其他概念
11.2.4應(yīng)用程序在操作系統(tǒng)上的執(zhí)行過程
11.3操作系統(tǒng)的分類
11.3.1單體結(jié)構(gòu)
11.3.2層次結(jié)構(gòu)
11.3.3微內(nèi)核結(jié)構(gòu)
11.4μC/OS-II簡介
11.4.1μC/OS-II的主要特點
11.4.2μC/OS-II工作原理
11.4.3μC/OS-II的程序設(shè)計模式
11.5μC/OS-II移植
11.5.1移植條件
11.5.2移植步驟
11.5.3內(nèi)核頭文件(OS_CPUH)
11.5.4與處理器相關(guān)的匯編代碼(OS_CPU_AASM)
11.5.5與CPU相關(guān)的C函數(shù)和鉤子函數(shù)(OS_CPU_CC)
第12章μC/OS-Ⅱ的內(nèi)核機制
12.1μC/OS-II內(nèi)核結(jié)構(gòu)
12.1.1μC/OS-II的任務(wù)
12.1.2臨界代碼
12.1.3任務(wù)控制塊
12.1.4就緒表
12.1.5任務(wù)的調(diào)度
12.1.6中斷處理
12.1.7時鐘節(jié)拍
12.1.8任務(wù)的初始化
12.1.9任務(wù)的啟動
12.2μC/OS-II的任務(wù)管理
12.2.1創(chuàng)建任務(wù)
12.2.2刪除任務(wù)
12.2.3請求刪除任務(wù)
12.2.4改變?nèi)蝿?wù)優(yōu)先級
12.2.5掛起任務(wù)
12.2.6恢復(fù)任務(wù)
12.2.7任務(wù)調(diào)度實例
12.3μC/OS-II的時間管理
12.3.1延時函數(shù)
12.3.2恢復(fù)延時任務(wù)
12.3.3系統(tǒng)時間
12.4任務(wù)間的通信與同步
12.4.1事件控制塊
12.4.2信號量
12.4.3信號量實例
第13章嵌入式系統(tǒng)綜合設(shè)計實例
13.1嵌入式系統(tǒng)開發(fā)過程
13.2自平衡小車基本功能
13.3硬件結(jié)構(gòu)
13.3.1電氣控制系統(tǒng)整體結(jié)構(gòu)
13.3.2加速度計
13.3.3陀螺儀
13.4控制算法設(shè)計
13.4.1角度檢測算法設(shè)計
13.4.2運動控制算法設(shè)計
附錄A嵌入式系統(tǒng)常用縮寫和關(guān)于端口讀/寫的縮寫表示
附錄BCortex-M3指令清單
附錄C51單片機與STM32微控制器的比較
C.1硬件:寄存器
C.2硬件:存儲器空間
C.3硬件:堆!
C.4硬件:外設(shè)
C.5硬件:異常和中斷
C.6軟件:數(shù)據(jù)類型
C.7軟件:浮點
C.8軟件:中斷服務(wù)程序
C.9軟件:非對齊數(shù)據(jù)
C.10軟件:故障異常
C.11軟件:設(shè)備驅(qū)動程序和CMSIS
C.12軟件:混用C語言和匯編程序
C.13其他比較
附錄DSTM32實驗板原理圖
參考文獻(xiàn)