采用由簡到難的編寫思路,
首先介紹簡單嵌入式發(fā)展趨勢和概念,然后逐步到功能性開發(fā),舉例分析,*后加深難度,介紹高級應用,從而使讀者很容易理解和消化。全書共10章,第1~3章介紹了嵌入式系統(tǒng)的基本概念、常用芯片、工具和嵌入式系統(tǒng)的開發(fā)過程; 第4章介紹了配套學習板的原理圖和設計思路; 第5~7章介紹了STM32的基本使用和各種外設的驅動以及開發(fā)應用,并列舉了各種典型的應用實例; 第8章介紹了c/OSⅡ在STM32上的應用情況; 第9章詳細介紹了STM32嵌入式系統(tǒng)中可以使用的一些經典實用算法; 第10章從實用角度列舉了支持MODBUS通信協(xié)議的通用控制器開發(fā)實例。
本書中列舉的實例具有一定難度,適合具有一定嵌入式基礎的讀者使用,初學者請參考本書提供的共享資料和開發(fā)板的應用代碼。本書的編寫強調實用性和易用性,希望能解決讀者學習和開發(fā)過程中的一些實際困難和問題。
《ARM Cortex-M3嵌入式開發(fā)及應用(STM32系列)》采用由簡到難的編寫思路講述嵌入式開發(fā)的流程,使讀者很容易進行理解和消化。本書的編寫強調實用性和易用性,希望能解決大家學習和開發(fā)過程中的一些實際困難問題。本書代碼豐富,可以有效地幫助讀者進行嵌入式技術的理解和學習,更適合動手能力比較強的讀者進行快速學習。注重代碼的實用性,讀者可以直接使用例程中的代碼開發(fā)新的應用,并快速完成新產品的開發(fā)。書中各項技術配套了開發(fā)板,讀者可以根據(jù)書中提供的代碼在開發(fā)板上進行學習和測試,一起達到比較好的學習效果。
Foreword
前言
嵌入式系統(tǒng)被描述為以應用為中心、軟件硬件可裁剪的、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴格綜合性要求的專用計算機系統(tǒng),由嵌入式硬件和嵌入式軟件兩部分組成。硬件是支撐,軟件是靈魂,幾乎所有的嵌入式產品中都需要嵌入式軟件來提供靈活多樣而且應用特制的功能。由于嵌入式系統(tǒng)應用廣泛,嵌入式軟件在整個軟件產業(yè)中占據(jù)了重要地位,并受到世界各國的廣泛關注,如今已成為信息產業(yè)中最為耀眼的明星之一。從20世紀90年代開始,以計算機技術、通信技術和軟件技術為核心的信息技術取得了更加迅猛的發(fā)展。計算機技術也開始進入一個被稱為后PC技術的時代。20多年來,嵌入式操作系統(tǒng)得到飛速的發(fā)展: 微處理器從8位到16位、32位甚至64位; 從支持單一品種的CPU芯片到支持多品種的; 從單一內核到除了內核外還提供其他功能模塊,如文件系統(tǒng)、TCP/IP網(wǎng)絡系統(tǒng)、窗口圖形系統(tǒng)等,并形成包括嵌入式操作系統(tǒng)、中間平臺軟件在內的嵌入式軟件體系。硬件技術的進步,推動了嵌入式系統(tǒng)軟件向運行速度更快、支持功能更強、應用開發(fā)更便捷的方向不斷發(fā)展。各種裝備與設備上嵌入式計算與系統(tǒng)的廣泛應用大大地推動了行業(yè)的滲透性應用。各種各樣的新型嵌入式系統(tǒng)設備在應用數(shù)量上已經遠遠超過通用計算機,任何一個普通人可能擁有從大到小的各種使用嵌入式技術的電子產品,小到MP3、PDA等微型數(shù)字化產品,大到網(wǎng)絡家電、智能家電、車載電子設備。而在工業(yè)和服務領域中,使用嵌入式技術的數(shù)字機床、智能工具、工業(yè)機器人、服務機器人也將逐漸改變了傳統(tǒng)的工業(yè)和服務方式。
隨著嵌入式系統(tǒng)應用的不斷深入和產業(yè)化程度的不斷提升,新的應用環(huán)境和產業(yè)化需求對嵌入式系統(tǒng)軟件提出了更加嚴格的要求。在新需求的推動下,嵌入式操作系統(tǒng)內核不僅需要具有微型化、高實時性等基本特征,還將向高可信性、自適應性、構件組件化方向發(fā)展; 支撐開發(fā)環(huán)境將更加集成化、自動化、人性化; 系統(tǒng)軟件對無線通信和能源管理的功能支持將日益重要。本書主要內容來自于我們研發(fā)團隊實踐,是研發(fā)團隊多年來開發(fā)嵌入式系統(tǒng)積累的經驗匯集,內容更重要地契合于嵌入式開發(fā)應用的實踐。本書以STM32F103MCU應用為主要內容,詳細介紹了STM32F103系列MCU的各種功能及其擴展應用,并且列舉了這些功能應用的實例。這些實例都是經過嚴格測試、可直接應用到實踐中的例程應用。讀者可以根據(jù)自身的需求和功能進行訂制和修改。本書所列舉的代碼都是基于3.5版本最新的庫函數(shù)驅動。
主要內容本書采用由簡到難的編寫思路,首先介紹簡單嵌入式發(fā)展趨勢和概念,然后逐步到功能性開發(fā),舉例分析,最后加深難度,介紹到高級應用,從而使讀者很容易進行理解和消化。第1~3章介紹了嵌入式系統(tǒng)的基本概念、常用芯片、工具和嵌入式系統(tǒng)的開發(fā)過程; 第4章介紹了配套學習板的原理圖和設計思路; 第5~7章介紹了STM32的基本使用和各種外設的驅動以及開發(fā)應用,并列舉了各種典型的應用實例; 第8章介紹了C/OSⅡ在STM32上的應用情況; 第9章詳細介紹了STM32嵌入式系統(tǒng)中可以使用的一些經典實用算法; 第10章從實用角度列舉了支持MODBUS通信協(xié)議的通用控制器開發(fā)實例。本書中列舉的實例具有一定難度,適合具有一定基礎的讀者使用,初學者請參考所帶光盤和開發(fā)板的應用代碼。本書的編寫強調實用性和易用性,希望能解決讀者學習和開發(fā)過程中的一些實際困難和問題。
讀者群定位本書的讀者需要具有一定的C語言、單片機以及硬件設計基礎,適合從事嵌入式開發(fā)的技術人員、STM32的初學者以及大專院校電子類專業(yè)的學生,也適合從8位、16位跨越到32位MCU開發(fā)平臺的開發(fā)人員。本書可以作為大專院校課程設計、畢業(yè)設計或者電子競賽的培訓和指導教材,也可作為本、專科的單片機和嵌入式系統(tǒng)相關的教材。書中包含代碼下載使用本書中所包含的代碼測試程序均可在WWW.SEIPHER.COM下載,下載內容包括: 開發(fā)板的各項功能測試代碼、已經移植好的C/OS Ⅱ的模板代碼,讀者可以直接下載和編譯。編譯環(huán)境為Keil MDK 5.0以上版本。讀者可以直接使用例程中的代碼開發(fā)新的應用,并快速完成新產品的開發(fā)。聯(lián)系作者讀者在使用本書的過程中,如果遇到相關的技術問題,或者對DevStm 4.0開發(fā)板有興趣,可以通過電子郵件和作者聯(lián)系(zxm@seipher.com),作者將盡最大努力與廣大讀者一起解決開發(fā)過程中遇到的問題,共同進步。致謝本書在編寫過程中,得到了作者所在公司同事和家人的理解和大力支持,清華大學出版社劉星編輯也做了大量的支持工作,感謝王長樂、趙偉萍分別審閱了本書的相關章節(jié)內容。本書編寫過程中參考了大量的文獻資料,一些資料來源于互聯(lián)網(wǎng)和開源社區(qū),書后的參考文獻未能一一列舉,再次對原作者和開源社區(qū)表示誠摯的謝意。由于作者水平有限,加之編寫時間倉促,書中難免存在不足和疏漏之處,敬請讀者批評指正。
作者2016年6月
張新民:男,43歲,1996年畢業(yè)于西安電子科技大學信息工程專業(yè)。主要從事嵌入式系統(tǒng)開發(fā)、自動化控制系統(tǒng)、RFID通信系統(tǒng)的研究工作。個人專注并研究的領域:計算機軟件系統(tǒng)的系統(tǒng)分析及構架設計;基于ARM及DSP的嵌入式應用系統(tǒng);基于C/OS-Ⅱ/GUI、SYS/BIOS的實時嵌入式系統(tǒng)應用;嵌入式系統(tǒng)在工業(yè)電氣自動化領域的可靠應用。自2005年至今,先后帶領研發(fā)團隊參與并主導了多項涉及國家十五、十一五及865計劃的重大專項,并取得了突出的成績。
目錄
Contents
第1章嵌入式系統(tǒng)開發(fā)技術
1.1嵌入式開發(fā)的基本概念
1.1.1嵌入式系統(tǒng)的基本組成
1.1.2嵌入式系統(tǒng)的特點
1.2嵌入式系統(tǒng)發(fā)展歷史與現(xiàn)狀
1.3嵌入式系統(tǒng)的組成
1.3.1硬件層
1.3.2中間層
1.3.3系統(tǒng)軟件層
1.4嵌入式系統(tǒng)相關概念
1.4.1嵌入式處理器
1.4.2嵌入式外圍設備
1.4.3嵌入式操作系統(tǒng)
1.4.4嵌入式應用軟件
1.5應用領域
第2章ARM技術概述
2.1ARM體系構架
2.1.1哈佛結構
2.1.2馮·諾依曼結構
2.2ARM的RISC結構特性
2.3常用ARM處理器系列
2.4ARM體系結構和技術特征
2.5ARM的流水線
2.6Thumb指令集
2.7Thumb2指令集
第3章基于STM32的嵌入式系統(tǒng)應用開發(fā)
3.1STM32F103系列MCU簡介
3.1.1MCU基本功能
3.1.2系統(tǒng)性能分析
3.2低功耗版本STM32L系列
3.3STM32的開發(fā)工具
3.4STM32的固件庫文件
3.5STM32的啟動文件
3.6JTAG簡介
3.7JTAG調試STM32F103過程
3.8SWD仿真模式
3.9JTAG接口及仿真器接口定義
3.10ISP下載器及常用工具
ARM Cortex-M3嵌入式開發(fā)及應用(STM32系列)
第4章DevStm 4.0開發(fā)板硬件及設計
4.1電源電路
4.2MCU外圍電路
4.3復位電路
4.4晶振電路
4.5啟動模式設置電路
4.6EEPROM電路
4.7串口電路
4.8RS485接口電路
4.9SD卡接口電路
4.10JTAG電路
4.11按鍵檢測電路
4.12開關檢測電路
4.13網(wǎng)絡接口電路
4.14PWM驅動LED電路
4.15片載A/D轉換電路
4.16AD7708 16位高精度A/D轉換電路
4.17CAN總線接口電路
4.18OLED顯示接口電路
4.19繼電器驅動電路
4.20SeiSite接口
4.21開發(fā)板原件PCB布局及接口指示說明
第5章STM32基本應用技術
5.1GPIO通用輸入/輸出接口
5.1.1GPIO端口結構
5.1.2GPIO口輸入/輸出模式
5.1.3GPIO的庫函數(shù)操作
5.1.4GPIO使用示例
5.2系統(tǒng)滴答定時器
5.2.1SysTick端口結構
5.2.2SysTick操作相關的庫函數(shù)
5.2.3SysTick使用示例
5.3復位、系統(tǒng)時鐘及實時時鐘RTC
5.3.1復位
5.3.2時鐘
5.3.3復位及時鐘操作相關的庫函數(shù)
5.3.4時鐘使用示例
5.4NVIC嵌套向量中斷控制器
5.4.1中斷優(yōu)先級
5.4.2中斷函數(shù)定義
5.4.3NVIC操作相關的庫函數(shù)
5.4.4NVIC使用示例
5.5EXTI外部中斷
5.5.1GPIO外部中斷
5.5.2EXTI操作相關的庫函數(shù)
5.5.3EXTI使用示例
5.6電源控制PWR
5.6.1獨立的A/D轉換器供電和參考電壓
5.6.2電池備份區(qū)域
5.6.3電壓調節(jié)器
5.6.4電源管理器
5.6.5低功耗模式
5.6.6低功耗模式下的自動喚醒
5.6.7PWR操作相關的庫函數(shù)
5.6.8PWR使用示例
第6章STM32F103的進階設計及應用
6.1TIMx定時器
6.1.1TIM1和TIM8高級定時器
6.1.2普通定時器TIMx
6.1.3基本定時器TIM6和TIM7
6.1.4定時器相關的時鐘源
6.1.5計數(shù)器模式
6.1.6定時器操作相關的庫函數(shù)
6.1.7TIMx使用示例
6.2外設DMA技術
6.2.1DMA基本概念
6.2.2DMA1和DMA2請求詳表
6.2.3DMA操作相關的庫函數(shù)
6.2.4DMA使用示例
6.3備份域寄存器
6.3.1BKP的工作機制
6.3.2BKP操作相關的庫函數(shù)
6.3.3BKP使用示例
6.4ADC模/數(shù)轉換器
6.4.1ADC主要特征
6.4.2ADC功能介紹
6.4.3ADC操作相關的庫函數(shù)
6.4.4ADC使用示例
6.5DAC數(shù)/模轉換器
6.5.1DAC的主要特征
6.5.2DAC的功能介紹
6.5.3DAC操作相關的庫函數(shù)
6.5.4DAC使用示例
6.6看門狗定時器
6.6.1看門狗應用介紹
6.6.2獨立看門狗IWDG
6.6.3窗口看門狗WWDG
6.6.4看門狗操作相關的庫函數(shù)
6.6.5看門狗使用示例
第7章STM32F103的通信接口及應用
7.1USART串行通信技術
7.1.1USART介紹
7.1.2USART主要特性
7.1.3USART功能概述
7.1.4USART操作相關的庫函數(shù)
7.1.5USART使用示例
7.2SPI通信接口應用
7.2.1SPI簡介
7.2.2SPI和I2S主要特征
7.2.3SPI功能介紹
7.2.4時鐘信號的相位和極性
7.2.5SPI工作模式
7.2.6SPI操作相關的庫函數(shù)
7.2.7SPI使用示例
7.3I2C通信接口應用
7.3.1I2C主要特點
7.3.2I2C功能描述
7.3.3I2C從模式
7.3.4SDA/SCL線控制
7.3.5SMBus介紹
7.3.6I2C操作相關的庫函數(shù)
7.3.7I2C使用示例
7.4CAN總線通信接口應用
7.4.1bxCAN介紹
7.4.2bxCAN主要特點
7.4.3bxCAN總體描述
7.4.4bxCAN工作模式
7.4.5測試模式
7.4.6CAN操作相關的庫函數(shù)
7.4.7CAN使用示例
7.5SDIO接口應用
7.5.1SD卡內部及引腳示意圖
7.5.2SD卡及SPI模式引腳名稱
7.5.3Micro SD引腳示意圖
7.5.4SD模式
7.5.5SDIO操作相關的庫函數(shù)
7.5.6SDIO使用示例
第8章C/OSⅡ在STM32上的應用
8.1C/OSⅡ的發(fā)展歷史
8.2C/OSⅡ體系結構
8.2.1任務管理
8.3.2時間管理
8.2.3內存管理
8.2.4通信同步
8.3C/OSⅡ關鍵函數(shù)
8.4C/OSⅡ中斷編程
8.5C/OSⅡ的學習方法
8.6C/OSⅡ的使用實例解析
第9章STM32中嵌入式應用信號處理算法
9.1線性濾波算法
9.1.1卡爾曼濾波算法應用
9.1.2卡爾曼濾波算法機理
9.1.3簡單例子
9.2常用濾波算法
9.2.1程序判數(shù)濾波
9.2.2中值濾波
9.2.3滑動算術平均值濾波
9.2.4滑動加權平均值濾波
9.2.5防脈沖干擾平均值濾波
9.2.6低通數(shù)字濾波
9.3PID過程控制算法
9.3.1模擬控制系統(tǒng)
9.3.2微機過程控制系統(tǒng)
9.3.3數(shù)字控制系統(tǒng)
9.3.4模擬PID調節(jié)器
9.3.5數(shù)字PID控制器
9.3.6PID算法的程序流程
9.3.7標準PID算法的改進
9.3.8積分項的改進
9.3.9采樣周期的選擇
9.3.10數(shù)字PID控制的參數(shù)選擇
9.3.11數(shù)字PID控制的工程實現(xiàn)
9.3.12偏差處理
9.4開關量濾波算法
第10章STM32開發(fā)工業(yè)級控制器應用
10.1工業(yè)級控制器的基本要求
10.2基于STM32F103設計的工業(yè)級控制器設計原理圖
10.3硬件關鍵設計驅動解析
10.3.1光耦隔離輸入檢測電路
10.3.2基于達靈頓管的信號繼電器驅動
10.3.3OLED顯示驅動接口驅動
10.4Modbus通信協(xié)議
10.4.1Modbus協(xié)議概述
10.4.2Modbus協(xié)議的數(shù)據(jù)幀
10.4.3Modbus RTU通信結構模型
10.4.4Modbus RTU協(xié)議的實現(xiàn)
參考文獻