書以新工科教育理念為指導(dǎo),以產(chǎn)教融合為突破口,面向產(chǎn)業(yè)需求,全面重構(gòu)課程內(nèi)容,將產(chǎn)業(yè)界的最新技術(shù)引入教學(xué)。從科研、教學(xué)和工程實(shí)際應(yīng)用出發(fā),理論聯(lián)系實(shí)際,全面系統(tǒng)地講述了基于STM32CubeMX Keil MDK和STM32Cube(STM32CubeMX和STM32CubeIDE)開發(fā)方式的嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用實(shí)例。
全書共分12章,主要內(nèi)容包括:緒論、Arm處理器體系架構(gòu)、STM32嵌入式微控器、STM32CubeMX的應(yīng)用、STM32CubeIDE開發(fā)平臺、STM32通用輸入輸出接口、STM32中斷系統(tǒng)、STM32定時器系統(tǒng)、STM32 通用同步異步收發(fā)器(USART)、STM32模數(shù)轉(zhuǎn)換器(ADC)、STM32 DMA控制器和嵌入式實(shí)時操作系統(tǒng)FreeRTOS。全書內(nèi)容豐富,體系先進(jìn),結(jié)構(gòu)合理,理論與實(shí)踐相結(jié)合,尤其注重工程應(yīng)用技術(shù)。
本書以新工科教育理念為指導(dǎo),以產(chǎn)教融合為突破口,面向產(chǎn)業(yè)需求,全面重構(gòu)課程內(nèi)容,將產(chǎn)業(yè)界的最新技術(shù)引入教學(xué)。從科研、教學(xué)和工程實(shí)際應(yīng)用出發(fā),理論聯(lián)系實(shí)際,全面系統(tǒng)地講述了基于STM32CubeMX Keil MDK和STM32Cube(STM32CubeMX和STM32CubeIDE)開發(fā)方式的嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用實(shí)例。全書共分12章,主要內(nèi)容包括:緒論、Arm處理器體系架構(gòu)、STM32嵌入式微控器、STM32CubeMX的應(yīng)用、STM32CubeIDE開發(fā)平臺、STM32通用輸入輸出接口、STM32中斷系統(tǒng)、STM32定時器系統(tǒng)、STM32 通用同步異步收發(fā)器(USART)、STM32模數(shù)轉(zhuǎn)換器(ADC)、STM32 DMA控制器和嵌入式實(shí)時操作系統(tǒng)FreeRTOS。全書內(nèi)容豐富,體系先進(jìn),結(jié)構(gòu)合理,理論與實(shí)踐相結(jié)合,尤其注重工程應(yīng)用技術(shù)。
隨著嵌入式系統(tǒng)在各領(lǐng)域的廣泛應(yīng)用,實(shí)時操作系統(tǒng)(RTOS)的需求日益增加。FreeRTOS是一款開源的實(shí)時操作系統(tǒng),專為資源受限的嵌入式系統(tǒng)設(shè)計(jì)。FreeRTOS由Richard Barry創(chuàng)建并維護(hù),提供了強(qiáng)大的任務(wù)調(diào)度功能,包括優(yōu)先級調(diào)度、時間片輪轉(zhuǎn)和多任務(wù)同步機(jī)制,如信號量、隊(duì)列、事件組和互斥鎖等。FreeRTOS支持多種處理器架構(gòu),包括Arm CortexM、PIC、AVR等,具有高度的移植性。
FreeRTOS實(shí)時操作系統(tǒng)具備小巧高效的特點(diǎn),典型內(nèi)核大小僅有幾千字節(jié)(KB),非常適合用于片上系統(tǒng)(SoC)和微控制器等。FreeRTOS還提供了可選的內(nèi)存管理方案,以滿足不同應(yīng)用的需求。同時,其豐富的API和強(qiáng)大的擴(kuò)展性,使開發(fā)者能夠快速構(gòu)建穩(wěn)定高效的實(shí)時應(yīng)用。此外,F(xiàn)reeRTOS擁有活躍的社區(qū)支持、豐富的文檔和實(shí)例代碼,極大地方便了開發(fā)和調(diào)試。FreeRTOS廣泛應(yīng)用于物聯(lián)網(wǎng)設(shè)備、工業(yè)自動化、機(jī)器人和消費(fèi)電子領(lǐng)域,為開發(fā)復(fù)雜嵌入式系統(tǒng)提供了強(qiáng)有力的支持。
本書的特點(diǎn)主要體現(xiàn)在以下幾方面。
(1) 系統(tǒng)性和全面性: 本書從FreeRTOS的基本概念入手,逐步深入任務(wù)管理、軟件定時器、任務(wù)間同步、進(jìn)程間通信與消息隊(duì)列、內(nèi)存管理、中斷管理以及內(nèi)核移植等各方面,內(nèi)容系統(tǒng)全面,覆蓋了FreeRTOS的各個重要方面。
(2) 實(shí)用性和操作性: 書中不僅介紹了理論知識,還結(jié)合了大量的實(shí)際應(yīng)用實(shí)例,幫助讀者在實(shí)踐中掌握FreeRTOS的使用方法。每章末尾的習(xí)題也有助于讀者鞏固所學(xué)知識。
(3) 針對性和專業(yè)性: 本書特別針對STM32嵌入式微控制器進(jìn)行了詳細(xì)介紹和實(shí)例講解,適合從事STM32開發(fā)的工程師和開發(fā)人員閱讀。
(4) 圖文并茂: 書中配有大量的圖表和示意圖,幫助讀者更直觀地理解FreeRTOS的工作原理和操作流程。
(5) 循序漸進(jìn): 本書內(nèi)容安排循序漸進(jìn),從基礎(chǔ)知識到高級應(yīng)用,逐步深入,適合不同層次的讀者學(xué)習(xí)和參考。
(6) 實(shí)戰(zhàn)案例: 書中結(jié)合了多個實(shí)戰(zhàn)案例,詳細(xì)講解了FreeRTOS在實(shí)際項(xiàng)目中的應(yīng)用,幫助讀者將理論知識應(yīng)用到實(shí)際開發(fā)中,提高系統(tǒng)開發(fā)效率和產(chǎn)品質(zhì)量。
全書共分為9章,具體內(nèi)容如下。
第1章講述了FreeRTOS的特點(diǎn)、商業(yè)許可、發(fā)展歷史及功能等基本概念,解釋了選擇FreeRTOS的理由,并介紹了FreeRTOS源碼和官方手冊的獲取方法,以及系統(tǒng)移植、文件組成、編碼規(guī)則及配置和功能裁剪等內(nèi)容,最后講解了FreeRTOS的啟動流程。
第2章概述了STM32微控制器,介紹了產(chǎn)品線和選型,詳細(xì)分析了STM32F407ZGT6的主要特性和功能,并解釋其芯片內(nèi)部結(jié)構(gòu)、引腳功能和最小系統(tǒng)設(shè)計(jì),同時還討論了STM32的GPIO、外部中斷EXTI、串口USART、定時器等外設(shè)及其工作原理。
第3章詳細(xì)講述了FreeRTOS的任務(wù)管理機(jī)制,包括多任務(wù)運(yùn)行基本機(jī)制、任務(wù)狀態(tài)、優(yōu)先級、空閑任務(wù)、基礎(chǔ)時鐘與嘀嗒信號等,還介紹了任務(wù)調(diào)度方法、任務(wù)管理相關(guān)函數(shù)、任務(wù)設(shè)計(jì)要點(diǎn)以及任務(wù)管理的應(yīng)用實(shí)例。
第4章講述了軟件定時器的特性、相關(guān)配置、服務(wù)任務(wù)的優(yōu)先級以及應(yīng)用場景,討論了軟件定時器的精度、運(yùn)作機(jī)制、控制塊及相關(guān)函數(shù),并通過應(yīng)用實(shí)例幫助讀者理解軟件定時器的使用方法。
第5章主要介紹了信號量和互斥量的原理、功能、運(yùn)作機(jī)制、控制塊及相關(guān)函數(shù),包括二值信號量、計(jì)數(shù)信號量、互斥量信號量、遞歸互斥量等。此外,討論了優(yōu)先級翻轉(zhuǎn)問題及其解決方法,通過應(yīng)用實(shí)例展示了FreeRTOS在任務(wù)間同步中的具體應(yīng)用。
第6章講述了進(jìn)程間通信的基本概念,詳細(xì)講解了消息隊(duì)列的特點(diǎn)和操作,包括隊(duì)列的創(chuàng)建、數(shù)據(jù)寫入和讀取方法,以及消息隊(duì)列的運(yùn)作機(jī)制、阻塞機(jī)制及應(yīng)用場景。同時,還介紹了消息隊(duì)列的控制塊及相關(guān)函數(shù),并通過實(shí)例說明其應(yīng)用方法。
第7章講述了內(nèi)存管理的基本概念及應(yīng)用場景,介紹了不同的內(nèi)存管理方案,詳細(xì)講解了heap_1.c、heap_2.c、heap_3.c、heap_4.c、heap_5.c等實(shí)現(xiàn)方式。同時,解釋了內(nèi)存池的工作機(jī)制和管理方式,通過實(shí)例展示了FreeRTOS內(nèi)存管理的具體應(yīng)用。
第8章詳細(xì)講述了FreeRTOS與中斷的關(guān)系、中斷的基本概念及相關(guān)名詞,討論了中斷管理的運(yùn)作機(jī)制和應(yīng)用場景。重點(diǎn)講解了任務(wù)與中斷服務(wù)例程(ISR)的關(guān)系、中斷屏蔽和臨界代碼段的設(shè)計(jì)原則,并介紹了在ISR中使用FreeRTOS API函數(shù)的方法,通過實(shí)例展示了中斷管理的應(yīng)用。
第9章主要講述了FreeRTOS在STM32上的移植實(shí)例,涵蓋從STM32 GPIO輸入輸出應(yīng)用的硬件設(shè)計(jì),到使用STM32CubeMX新建工程,通過Keil MDK和STM32CubeIDE實(shí)現(xiàn)工程,使用STM32CubeProgrammer下載固件,以及通過STM32CubeIDE進(jìn)行調(diào)試的詳細(xì)步驟,系統(tǒng)地展示了整個移植過程。
通過對這9章內(nèi)容的全面學(xué)習(xí),讀者將系統(tǒng)掌握FreeRTOS的運(yùn)行機(jī)制及其在嵌入式系統(tǒng)開發(fā)中的具體應(yīng)用,從而能夠更加高效地設(shè)計(jì)和開發(fā)高性能的嵌入式系統(tǒng)。希望本書能夠成為廣大嵌入式系統(tǒng)開發(fā)者和工程師了解和應(yīng)用FreeRTOS的指南。
本書結(jié)合作者多年的科研和教學(xué)經(jīng)驗(yàn),遵循循序漸進(jìn)、理論與實(shí)踐并重、共性與個性兼顧的原則,將理論與實(shí)踐一體化的教學(xué)方式融入其中。書中實(shí)例開發(fā)過程用到的是目前使用最廣泛的野火STM32開發(fā)板F407霸天虎,由此開發(fā)各種功能,書中實(shí)例均進(jìn)行了調(diào)試。讀者也可以結(jié)合實(shí)際或者手里現(xiàn)有的開發(fā)板開展實(shí)驗(yàn),均能獲得實(shí)驗(yàn)結(jié)果。
本書數(shù)字資源豐富,配有教學(xué)課件、程序代碼、教學(xué)大綱、電路文件、官方手冊等電子資源。
對本書中所引用的參考文獻(xiàn)的作者,在此一并向他們表示真誠的感謝。由于編者水平有限,加上時間倉促,書中錯誤和不妥之處在所難免,敬請廣大讀者不吝指正。
編者2025年2月
李正軍,山東大學(xué)控制科學(xué)與工程學(xué)院教授、山東大學(xué)重點(diǎn)建設(shè)項(xiàng)目現(xiàn)場總線技術(shù)實(shí)驗(yàn)室負(fù)責(zé)人、碩士研究生導(dǎo)師,山東大學(xué)優(yōu)秀教師。長期從事計(jì)算機(jī)控制、嵌入式控制系統(tǒng)、電力網(wǎng)絡(luò)監(jiān)測儀表、現(xiàn)場總線與工業(yè)以太網(wǎng)控制系統(tǒng)、電力系統(tǒng)自動化、智能儀器儀表、無創(chuàng)呼吸機(jī)等方向研究,并具有較深造詣。中國電氣工業(yè)協(xié)會設(shè)備網(wǎng)現(xiàn)場總線分會理事、中華人民共和國機(jī)械行業(yè)標(biāo)準(zhǔn)《低壓電氣通信規(guī)約》審稿人,全國電器設(shè)備網(wǎng)絡(luò)通信接口標(biāo)準(zhǔn)化委員會委員。設(shè)計(jì)的產(chǎn)品在國內(nèi)外市場具有很大的影響,所指導(dǎo)的研究生在國內(nèi)外各大公司擔(dān)任重要崗位,并具有豐厚的待遇。主持省部級科技攻關(guān)和企業(yè)委托項(xiàng)目30余項(xiàng),出版《計(jì)算機(jī)測控系統(tǒng)設(shè)計(jì)與應(yīng)用》、《現(xiàn)場總線及其應(yīng)用技術(shù)》(第2版)、《計(jì)算機(jī)控制系統(tǒng)》(第3版)、《現(xiàn)場總線與工業(yè)以太網(wǎng)及其應(yīng)用系統(tǒng)設(shè)計(jì)》 等著作11部 ,授權(quán)國家專利2項(xiàng),發(fā)表學(xué)術(shù)論文60余篇,獲得省部級科技進(jìn)步獎3項(xiàng)。
第1章緒論
1.1FreeRTOS系統(tǒng)概述
1.1.1FreeRTOS的特點(diǎn)
1.1.2FreeRTOS的商業(yè)許可
1.1.3選擇FreeRTOS的理由
1.1.4FreeRTOS的發(fā)展歷史
1.1.5FreeRTOS的功能
1.1.6FreeRTOS的一些概念和術(shù)語
1.2FreeRTOS的源碼和官方手冊獲取
1.3FreeRTOS系統(tǒng)移植簡介
1.4FreeRTOS的文件組成
1.5FreeRTOS的編碼規(guī)則及配置和功能裁剪
1.6FreeRTOS的啟動流程
第2章STM32嵌入式微控制器
2.1STM32F407ZGT6概述
2.1.1STM32F407的主要特性
2.1.2STM32F407的主要功能
2.2STM32F407ZGT6芯片內(nèi)部結(jié)構(gòu)
2.3STM32F407VGT6芯片引腳和功能
2.4STM32F407VGT6最小系統(tǒng)設(shè)計(jì)
2.5STM32通用輸入輸出GPIO
2.5.1STM32 GPIO接口概述
2.5.2STM32的GPIO功能
2.6STM32外部中斷
2.6.1STM32F4中斷系統(tǒng)
2.6.2STM32F4外部中斷/事件控制器
2.7STM32串口USART
2.8STM32定時器
2.8.1STM32F4定時器概述
2.8.2STM32F4基本定時器
2.9STM32外設(shè)例程
第3章FreeRTOS任務(wù)管理
3.1任務(wù)管理概述
3.1.1多任務(wù)運(yùn)行基本機(jī)制
3.1.2任務(wù)的狀態(tài)
3.1.3任務(wù)的優(yōu)先級
3.1.4空閑任務(wù)
3.1.5基礎(chǔ)時鐘與嘀嗒信號
3.2FreeRTOS的任務(wù)調(diào)度
3.2.1任務(wù)調(diào)度方法概述
3.2.2使用時間片的搶占式調(diào)度方法
3.3任務(wù)管理的應(yīng)用場合
3.4任務(wù)管理相關(guān)函數(shù)
3.5FreeRTOS任務(wù)的設(shè)計(jì)要點(diǎn)
3.6FreeRTOS任務(wù)管理應(yīng)用實(shí)例
第4章FreeRTOS軟件定時器
4.1軟件定時器概述
4.1.1軟件定時器的特性
4.1.2軟件定時器的相關(guān)配置
4.1.3定時器服務(wù)任務(wù)的優(yōu)先級
4.2軟件定時器應(yīng)用場景
4.3軟件定時器的精度
4.4軟件定時器的運(yùn)作機(jī)制
4.5軟件定時器控制塊
4.6軟件定時器的相關(guān)函數(shù)
4.6.1軟件定時器創(chuàng)建函數(shù)
4.6.2軟件定時器啟動函數(shù)
4.6.3軟件定時器停止函數(shù)
4.6.4軟件定時器任務(wù)
4.6.5軟件定時器刪除函數(shù)
4.7FreeRTOS軟件定時器應(yīng)用實(shí)例
第5章FreeRTOS任務(wù)間同步
5.1FreeRTOS信號量
5.1.1二值信號量
5.1.2計(jì)數(shù)信號量
5.1.3互斥信號量
5.1.4遞歸互斥量
5.1.5信號量應(yīng)用場景
5.1.6二值信號量運(yùn)作機(jī)制
5.1.7計(jì)數(shù)信號量運(yùn)作機(jī)制
5.1.8信號量控制塊
5.1.9相關(guān)函數(shù)
5.1.10FreeRTOS信號量應(yīng)用實(shí)例
5.2FreeRTOS互斥量
5.2.1優(yōu)先級翻轉(zhuǎn)問題
5.2.2互斥量的工作原理
5.2.3互斥量應(yīng)用場景
5.2.4互斥量的運(yùn)作機(jī)制
5.2.5互斥量控制塊
5.2.6互斥量函數(shù)接口
5.2.7FreeRTOS互斥量應(yīng)用實(shí)例
5.3FreeRTOS事件組
5.3.1事件組的原理和功能
5.3.2事件組的應(yīng)用場景
5.3.3事件組運(yùn)作機(jī)制
5.3.4事件組控制塊
5.3.5事件組相關(guān)函數(shù)
5.3.6FreeRTOS事件組應(yīng)用實(shí)例
第6章FreeRTOS進(jìn)程間通信與消息隊(duì)列
6.1進(jìn)程間通信
6.2隊(duì)列的特點(diǎn)和基本操作
6.2.1隊(duì)列的特點(diǎn)
6.2.2隊(duì)列的基本操作
6.3消息隊(duì)列的運(yùn)作機(jī)制
6.4消息隊(duì)列的阻塞機(jī)制
6.5消息隊(duì)列的應(yīng)用場景
6.5.1任務(wù)間的消息交換
6.5.2中斷與任務(wù)間的消息傳遞
6.5.3日志系統(tǒng)和事件監(jiān)控
6.6消息隊(duì)列控制塊
6.7消息隊(duì)列操作相關(guān)函數(shù)
6.7.1消息隊(duì)列創(chuàng)建函數(shù)
6.7.2消息隊(duì)列靜態(tài)創(chuàng)建函數(shù)
6.7.3消息隊(duì)列刪除函數(shù)
6.7.4向消息隊(duì)列發(fā)送消息函數(shù)
6.7.5從消息隊(duì)列讀取消息函數(shù)
6.8FreeRTOS消息隊(duì)列應(yīng)用實(shí)例
第7章FreeRTOS內(nèi)存管理
7.1內(nèi)存管理的基本概念
7.2內(nèi)存管理的應(yīng)用場景
7.3內(nèi)存管理方案
7.3.1heap_1.c
7.3.2heap_2.c
7.3.3heap_3.c
7.3.4heap_4.c
7.3.5heap_5.c
7.4FreeRTOS內(nèi)存管理應(yīng)用實(shí)例
第8章FreeRTOS中斷管理
8.1FreeRTOS與中斷
8.2中斷的基本概念
8.3中斷管理的運(yùn)作機(jī)制
8.4中斷管理的應(yīng)用場景
8.5FreeRTOS中斷管理機(jī)制
8.6任務(wù)與中斷服務(wù)程序
8.6.1任務(wù)與中斷服務(wù)程序的關(guān)系
8.6.2中斷屏蔽和臨界代碼段
8.6.3在ISR中使用FreeRTOS API函數(shù)
8.6.4ISR設(shè)計(jì)原則
8.7FreeRTOS中斷管理應(yīng)用實(shí)例
第9章FreeRTOS在STM32上的移植實(shí)例
9.1STM32的GPIO輸入輸出應(yīng)用硬件設(shè)計(jì)
9.1.1STM32的GPIO輸入應(yīng)用硬件設(shè)計(jì)
9.1.2STM32的GPIO輸出應(yīng)用硬件設(shè)計(jì)
9.2STM32Cbue簡介
9.3通過STM32CubeMX新建工程
9.4通過Keil MDK實(shí)現(xiàn)工程
9.5通過STM32CubeIDE實(shí)現(xiàn)工程
9.6通過STM32CubeProgrammer下載工程
9.7使用STM32CubeIDE調(diào)試工程
參考文獻(xiàn)