本書首先介紹微型計算機相關基礎知識和應用,然后系統(tǒng)論述 ARM Cortex-M3 微處理器架構、開發(fā)方法及基本編程匯編語言和程序設計方法,并提供以 STM32Z103VET6 芯片為核心的基礎實驗平臺以及拓展模塊。本書詳細介紹微處理器多種接口技術,如 GPIO、定時計數器、異步/同步串行通信、DAC/ADC、中斷處理以及實時操作系統(tǒng) FreeRTOS 移植等各種嵌入式接口技術的原理和應用。 根據高等工程專業(yè)教育和專業(yè)認證的需求,以及對動手能力的培養(yǎng),本書配有最小系統(tǒng)擴展系統(tǒng)高級拓展系統(tǒng)三種實驗平臺,緊密結合實驗平臺,配套基礎實驗和綜合實驗。本書實驗內容和數量豐富,實例代碼均經過平臺驗證,讀者可以直接在實驗平臺上使用和演練,提高實踐和設計能力。 本書內容深入淺出、層次分明、實例豐富,可操作性強,特別適合作為普通高校電子信息類、計算機應用類、自動化類、電氣類和機械控制類等專業(yè)的教學用書,也可作為培訓教材和應用型研究生教學的參考資料,還可供從事嵌入式系統(tǒng)應用的工程技術人員參考。
(1) 體現(xiàn)工程教育專業(yè)認證的理念,注重培養(yǎng)學生解決復雜工程問題的能力。突出實踐教學,虛實結合,構建完整的實驗體系,將課堂教學和嵌入式系統(tǒng)設計能力的培養(yǎng)常態(tài)化。
(2) 采用模塊化的系統(tǒng)設計方法,設計了以STM32F103ZET6處理器為核心的實驗平臺及拓展模塊,提高設計的抽象層次,降低設計難度,適用于各種學習層次。書中的實驗案例均可在實驗平臺上運行和演習,幫助讀者熟練掌握接口技術的原理及應用。
(3) 新形態(tài)教材,配套資源豐富,包括教學大綱、課程案例、PPT課件、微課視頻、MOOC等,可掃描書中二維碼下載或觀看,或者直接聯(lián)系作者獲取。本書配套的在線開放課程微機原理與單片機技術已在中國大學MOOC上線。
(4) 配套80道基礎知識思考題和問答題,查漏補缺、加深知識理解;配套15道設計訓練題,掌握完整嵌入式控制系統(tǒng)設計方法,提高工程實踐能力;提供標準答案,便于翻轉課堂和自主學習。
(5) 以實驗平臺為基礎,通過選用不同的模塊構建設計案例和訓練題。每章配套5個典型實用的設計案例,其中3個基礎設計、2個綜合設計。案例均源自編者數十年從事嵌入式系統(tǒng)設計的深厚積累。
集成電路(IC)芯片與CPU控制器行業(yè)已成為國內外半導體產業(yè)中最具發(fā)展活力的領域。在 十三五期間,據恒州博智數據顯示,2021年中國芯片業(yè)的規(guī)模已經增長到萬億元級別,年均復合增長率達到17.9%,是同期全球半導體產業(yè)年均復合增長率的近4倍。目前,全球半導體行業(yè)正經歷第三次產業(yè)轉移,世界半導體產業(yè)逐漸向中國大陸轉移。未來隨著半導體產品國產化的不斷加深,控制器芯片行業(yè)也將得到更長足的發(fā)展,會成為決定國家競爭力的標志。習近平總書記說過: 教育是對中華民族偉大復興具有決定性意義的事業(yè),高校立身之本在于立德樹人。在教育領域為黨育人,為國育才的初心使命中,教材是教師教、學生學的重要資料,是教師搞好教書育人工作的具體依據,也是學生獲得系統(tǒng)知識,發(fā)展智力和提高思想品德覺悟的重要工具。本書在編寫過程中與時俱進,注重知識傳授與價值引領教育的結合,主要體現(xiàn)在:
(1) 加強師生聯(lián)系,將教學活動由課堂延伸到課外及實驗室,構建科學的教學體系;
(2) 突出實踐教學,虛實結合,構建完整的實驗體系;
(3) 加強線下和線上MOOC課程建設,提供豐富的教學資源和技術手段,創(chuàng)建師生即時溝通渠道;
(4) 強調思政建設,使學生明確學習目的,從要我學到我要學再到為何學,以培養(yǎng)德才兼?zhèn)涞膭?chuàng)新型電子信息類人才為目標。過去數十年,微機原理與接口技術課程的教材從講授Z80發(fā)展到講授Intel 80x86/88 處理器,至今還多有使用。單片機原理應用課程的許多教材也還在講授基于Intel 8051內核的單片機。隨著科技的進步,多款老舊IC芯片已漸漸遠離市場,目前基于ARM CortexM系列內核的處理器芯片已經成為微處理器和微控制器工業(yè)應用領域的支柱處理芯片,也出版了相應的教科書。高等院校都在修改人才培養(yǎng)大綱和計劃,特別強化實踐教學內容。在萬物互聯(lián)的今天,工程師面對的是大數據和復雜工程系統(tǒng),這對我們的教育提出了更高的要求,需要在教學中實現(xiàn)理論與實踐一體化。因此,本書將努力把實踐平臺和理論教學結合,強化創(chuàng)新工程實踐,滿足高層次和應用型人才的培養(yǎng)需求。本書具體包含以下內容:
第1章微計算機系統(tǒng)基礎知識。介紹微計算機基礎知識和相關概念定義,以及各種數制計算與轉換。概述ARM的發(fā)展歷程及其在社會各領域的應用情況。
第2章CortexM3體系結構與芯片。詳細介紹CortexM3體系結構,包含三級流水線、總線結構與組成、中斷控制機理以及存儲器結構的基本情況。
第3章STM32F1系列處理器。概述STM32F1系列處理器產品,詳細介紹STM32F103ZET6處理器的內部結構、時鐘樹及其內部存儲器結構與映像。應用STM32F103處理器設計本書的配套實驗最小系統(tǒng)、擴展系統(tǒng)和高級實驗系統(tǒng)平臺,并介紹其仿真開發(fā)系統(tǒng)的構建。
第4章STM32程序設計。介紹硬件設計匯編語言、尋址方式、指令集以及程序設計方法和技巧,詳細介紹固件庫及其應用方法。
第5~10章各種典型擴展外設。詳細介紹STM32F103處理器的通用輸入/輸出
接口(GPIO)、中斷控制器(NVIC)、定時計數器及其脈寬調制器(PWM)、各種同步異步串行通信口、ADC/DAC、DMA和FSMC控制器,并在幾種實驗平臺上給出相應的實驗例子。
第11章FreeRTOS實時操作系統(tǒng)。鑒于操作系統(tǒng)的優(yōu)越性,詳細介紹FreeRTOS操作系統(tǒng)的原理與使用。針對不同應用系統(tǒng),給出操作系統(tǒng)的裁剪和移植方法,并在配套高級實驗平臺上實現(xiàn)和演示。
本書所有的實驗代碼均通過在線平臺調試運行。讀者可直接在配套實驗平臺上反復修改運行和演習,熟練掌握各種接口技術的編程和應用技巧。本書還配套其他教學資源,如PPT課件、習題庫、實驗指導書和視頻,讀者可登錄中國大學MOOC平臺的微機原理與單片機技術在線開放課程,或者直接聯(lián)系作者獲取。
特別感謝清華大學出版社在本書的出版過程中給予的指導和大力支持。
本書在編寫過程中得到南京信息工程大學的相關老師和同學的關心和支持。在此表示衷心感謝!
由于本書涉及面廣,ARM芯片功能強大和應用場景復雜,以及作者的水平和經驗有限,本書的疏漏之處在所難免,懇請專家和讀者提出批評和指正,以便修訂時改正。
編者
2023年10月
周杰,南京信息工程大學教授、博士生導師。江蘇省六大高峰人才資助對象;中國電子學會、通信學會會員、IEEE和IEICE 會員、中國氣象學會會員、江蘇省氣象電子科學與技術學會副主任委員。19901998年,重慶郵電大學工程師、副教授;2001年,日本國立新瀉大學博士后和助理教授;2002年,重慶郵電大學教授,校特聘教授,通信與電子學科帶頭人;2005年,南京信息工程大學特聘教授。獲江蘇省科學技術二等獎和2019年度中國產學研合作創(chuàng)新成果獎二等獎;發(fā)表論文100余篇,SCI、EI和ISTP收錄論文70余篇;出版教材、專著4部。
喬杰副,南京信息工程大學副教授。主講數字信號處理、微機原理與單片機技術等多門課程,具有豐富的一線教學經驗。具備豐富的嵌入式系統(tǒng)設計及工業(yè)應用經驗,為多家企業(yè)和行業(yè)設計開發(fā)嵌入式應用系統(tǒng),多項研究及應用成果獲得國家專利。
周北平,南京信息工程大學高級工程師。主要從事信息應用與氣象傳感網系統(tǒng)交叉學科等方面研究。主持參與國家級和省部級項目5項,發(fā)表論文6篇,獲授權發(fā)明專利7項,獲長江水利委員會科學技術獎一等獎。
李致金,南京信息工程大學副教授,碩士生導師。主持國家自然科學基金子項目,參與國家自然科學基金、省部級基金項目多項。發(fā)表論文20余篇,授權發(fā)明專利3項,實用新型專利10余項。
第1章微計算機系統(tǒng)基礎知識
1.1概述
1.2微計算機的基本構成
1.2.1基本概念
1.2.2馮·諾伊曼和哈佛結構
1.2.38086/8088與ARM體系
1.2.4微計算機編程與操作系統(tǒng)
1.3數制與編碼
1.3.1二進制/十進制/十六進制
1.3.2數制間的轉換
1.3.3數值數據編碼
1.3.4字符數據編碼
1.4微計算機應用領域
第2章CortexM3體系結構與芯片
2.1概述
2.2CortexM3內核結構
2.2.1CortexM3內核組成與特點
2.2.2CortexM3總線
2.3基于CortexM3內核的處理器體系結構
2.3.1工作模式
2.3.2三級流水線
2.3.3寄存器
2.4存儲器結構及其管理機制
2.4.1存儲器分類與特點
2.4.2CortexM3存儲器分區(qū)
2.4.3CortexM3非對齊訪問和互斥訪問
2.5中斷以及異常
2.5.1中斷及異常的概念
2.5.2CortexM3中斷控制器NVIC
2.5.3CortexM3系統(tǒng)級中斷與異常特點
2.5.4CortexM3中斷及異常嵌套與返回途徑
2.5.5高級中斷技術
2.6基于CortexM3內核的STM32處理器
2.6.1STM32處理器特點
2.6.2編程模式與調試工具簡述
第3章STM32F1系列處理器
3.1STM32F1系列處理器簡介
3.2STM32F103ZET6處理器架構和主要特性
3.2.1芯片和引腳定義
3.2.2系統(tǒng)架構
3.2.3主要特性
3.3STM32F103ZET6的時鐘樹
3.4STM32F103ZET6存儲器組織及其映像
3.5最小系統(tǒng)
3.5.1復位電路
3.5.2時鐘電路
3.5.3電源DCDC轉換電路
3.5.4系統(tǒng)調試電路JTAG
3.5.5其他輔助電路
3.6STM32最小系統(tǒng)和拓展實驗平臺
3.7STM32實驗環(huán)境構建
3.8STM32軟件開發(fā)與仿真環(huán)境構建
第4章STM32程序設計
4.1匯編語言簡介
4.1.1計算機語言
4.1.2匯編語言的語法結構
4.2尋址方式與指令系統(tǒng)
4.2.1CortexM3指令組成結構
4.2.2尋址方式
4.2.3CortexM3指令集
4.3基于CortexM3處理器的匯編語言程序設計
4.3.1ARM匯編語言中的常量、變量、表達式及運算符
4.3.2偽指令
4.3.3程序設計思想
4.3.4程序示例
4.4C固件庫使用與編程
4.4.1直接操作寄存器與固件庫開發(fā)
4.4.2CMSIS標準與STM32標準庫
4.4.3固件庫的C語言知識
4.4.4固件庫函數使用與編程
第5章通用輸入/輸出接口
5.1GPIO接口概述
5.2GPIO接口基本功能
5.2.1GPIO
5.2.2接口位設置或位清除
5.2.3外部中斷/喚醒線
5.2.4接口復用功能及其配置
5.2.5軟件重新映射GPIO復用功能
5.2.6GPIO接口的鎖定機制
5.2.7輸入和輸出配置
5.3GPIO寄存器及其功能配置
5.3.1x接口配置低寄存器GPIOx_CRL
5.3.2x接口配置高寄存器GPIOx_CRH
5.3.3x接口輸入/輸出數據寄存器GPIOx_IDR和GPIOx_ODR
5.3.4接口位設置/清除寄存器GPIOx_BSRR
5.3.5接口位清除寄存器GPIOx_BRR
5.3.6接口配置鎖定寄存器GPIOx_LCKR
5.4RCC時鐘模塊寄存器
5.4.1時鐘控制和配置寄存器RCC_CR和RCC_CFGR
5.4.2時鐘中斷寄存器RCC_CIR
5.4.3APB1/2外設復位寄存器RCC_APB1RSTR和RCC_APB2RSTR
5.4.4AHB外設時鐘使能寄存器RCC_AHBENR
5.4.5APB1/2外設時鐘使能寄存器RCC_APB1ENR和RCC_APB2ENR
5.4.6備份域控制寄存器RCC_BDCR
5.4.7控制/狀態(tài)寄存器RCC_CSR
5.5通用輸入輸出GPIO接口使用
5.5.1利用C語言直接操作寄存器方法訪問GPIO方法
5.5.2利用固件庫函數方法訪問GPIO接口方法
第6章中斷和事件
6.1ARM STM32的中斷源
6.1.1STM32F103ZET6中斷和異常向量
6.1.2ARM STM32中斷優(yōu)先級
6.2ARM STM32中斷管理機制
6.2.1向量中斷寄存器
6.2.2中斷設置流程
6.3外部中斷/事件控制器EXTI
6.3.1EXTI結構與管理機制
6.3.2外部中斷/事件控制器EXTI相關寄存器
6.4外部中斷的使用
第7章STM32定時器
7.1定時器原理
7.1.1基本定時器
7.1.2通用定時器
7.1.3高級定時器
7.1.4滴答定時器
7.2定時器中斷應用
7.2.1硬件設計
7.2.2軟件設計
7.3定時器PWM輸出應用
7.3.1脈寬調制
7.3.2實現(xiàn)PWM輸出相關寄存器
7.3.3硬件配置
7.3.4軟件設計
7.4定時器輸入捕獲應用
7.4.1定時器輸入捕獲簡介
7.4.2硬件配置
7.4.3軟件設計
第8章串行通信
8.1串行通信的相關概念
8.1.1串行通信與并行通信
8.1.2串行通信的分類
8.1.3串行異步通信的數據傳輸形式
8.2STM32通用同步/異步收發(fā)器
8.2.1USART概述
8.2.2USART通信
8.2.3USART固件庫函數
8.2.4USART應用示例
8.3STM32處理器的SPI
8.3.1SPI概述
8.3.2SPI通信
8.3.3SPI固件庫函數
8.3.4SPI接口應用例
8.4STM32處理器的I2C接口
8.4.1I2C接口概述
8.4.2I2C接口通信
8.4.3I2C接口固件庫函數
8.4.4I2C接口應用示例
第9章ADC和DAC接口
9.1模擬量
9.2ADC工作原理及性能指標
9.2.1ADC原理
9.2.2ADC的性能指標
9.3STM32處理器ADC的構造及特性
9.3.1硬件結構
9.3.2功能特性
9.4STM32處理器ADC功能配置
9.5STM32處理器ADC寄存器
9.6STM32 ADC應用
9.6.1STM32 ADC固件庫函數
9.6.2STM32 ADC應用示例
9.7DAC工作原理及性能指標
9.7.1DAC工作原理
9.7.2DAC性能指標
9.8STM32處理器DAC模塊硬件及特性
9.8.1STM32 DAC硬件
9.8.2功能特性
9.9STM32 DAC功能配置
9.10STM32 DAC寄存器
9.11STM32處理器的DAC應用
9.11.1STM32 處理器的DAC固件庫函數
9.11.2STM32 DAC應用示例
第10章DMA和FSMC控制器
10.1DMA簡介
10.2DMA結構與功能
10.2.1DMA主要特征
10.2.2DMA寄存器
10.2.3DMA通道
10.2.4DMA中斷請求
10.2.5DMA仲裁器
10.2.6DMA請求映射
10.3DMA重要固件庫函數
10.4DMA存儲器到外設模式操作示例
10.5FSMC簡介
10.6FSMC結構與功能
10.6.1FSMC功能特點
10.6.2AHB總線接口
10.6.3外部設備接口
10.6.4FSMC寄存器
10.6.5FSMC的地址映射
10.7FSMC重要固件庫函數
10.8FSMC對TFTLCD液晶屏幕操作例
第11章FreeRTOS實時操作系統(tǒng)
11.1FreeRTOS簡介
11.2FreeRTOS基礎知識
11.2.1FreeRTOS系統(tǒng)配置
11.2.2FreeRTOS中斷配置
11.2.3FreeRTOS臨界段代碼保護
11.2.4FreeRTOS任務基礎知識
11.3FreeRTOS開發(fā)重要函數
11.3.1任務創(chuàng)建和刪除函數
11.3.2任務掛起和恢復函數
11.4FreeRTOS信號量
11.4.1信號量簡介
11.4.2二值信號量
11.4.3計數信號量
11.4.4互斥信號量
11.4.5遞歸互斥信號量
11.5FreeRTOS移植
11.5.1系統(tǒng)移植準備工作
11.5.2FreeRTOS移植
11.5.3關鍵問題解決方案
11.6FreeRTOS操作系統(tǒng)使用示例
參考文獻
附錄AASCII碼表
附錄B最小實驗系統(tǒng)
附錄C擴展實驗系統(tǒng)
附錄D高級實驗系統(tǒng)