STM32嵌入式微控制器快速上手(第3版) ( 簡體 字) |
作者:陳志旺 | 類別:1. -> 電腦組織與體系結構 -> 單晶片 -> STM32 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 56390 詢問書籍請說出此書號!【缺書】 NT售價: 495 元 |
出版日:4/1/2024 |
頁數:432 |
光碟數:0 |
|
站長推薦: ![](img/star_1.gif) |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121476099 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: 習近平總書記在黨的二十大報告中指出:“我們要堅持教育優先發展、科技自立自強、人才引領驅動,加快建設教育強國、科技強國、人才強國,堅持為黨育人、為國育才,全面提高人才自主培養質量,著力造就拔尖創新人才,聚天下英才而用之。” “深化教育領域綜合改革,加強教材建設和管理,完善學校管理和教育評價體系,健全學校家庭社會育人機制。”
上述原則是本次修訂秉持的重要指導原則。
STM32單片機系列類型越來越多,資料卷帙浩繁。如何在高校課堂有限的學時內開展教學,如何給初學者編寫入門參考書,為其指明學習方向和學習方法,使其熟練進行嵌入式系統開發,是值得我們深思的。
編寫本書的目的是在有限的學時內基于STM32單片機培養學生的計算思維。北京大學李曉明教授在2019中國計算機教育大會上發表了《對計算思維的理解與教育實踐》報告,其中對“計算思維是指利用包括網絡在內的計算系統進行問題求解的思維方式”的論述如下圖所示。
從李曉明教授的報告中可以看出,計算思維主要包含兩點,即理解計算系統和應用解決問題,這兩點也應該在STM32的教學中體現出來。這種計算思維與具體單片機無關。具體來說,本書以計算思維為導向,幫助讀者把STM32作為一個工具來學習計算機學科的基礎知識,充實實踐內容。本書所有內容都是圍繞“以STM32單片機為例來講解微機原理”和“培養底層編程意識和思想”這兩個核心目標進行的。本書對所有與這兩個目標關系并不密切的內容進行了舍棄,使讀者可以將注意力集中在那些具有普遍意義的計算機知識上。
有了目標,如何導航?導航需要“地圖”和“指南針”。
“地圖”可以使讀者對嵌入式微控制器的知識體系有宏觀的把握,居高臨下,不會“不識廬山真面目,只緣身在此山中”。STM32單片機的資源很豐富,工具很完善,這是其占領嵌入式市場的優勢,但這也使得初學者不知從何入手。盡管ST公司寫了厚厚的芯片手冊,但并不適合初學者。如果把手冊看作一幅真實的地圖,那么初學者需要的是一幅“手繪地圖”。大學課堂上的教材應是這樣的“手繪地圖”,它不必對所有細節都進行事無巨細的介紹(對于STM32的所有外設,不一定都進行介紹),但應給出學習的“導航路徑”,提示讀者需要重點關注的地方,用易于理解的方式進行解釋;對于“比例尺”(詳略),要根據讀者的能力及應用來選擇;知識體系要全面、完整。初學者學習完“手繪地圖”,就有了初步的基礎,更重要的是對單片機的全貌有了一定的認識。此時再看手冊,就會形成良好的學習梯度,便于初學者拾級而上。
這里的“地圖”也指STM32的整體結構,讀者學習每部分的內容時,要明確各部分內容在整體結構中的位置及相互之間的關系。
“指南針”指示方向,使讀者可以洞察重點,突破難點,注重典型性,避免隨意性;注重遷移性,避免孤立性。
本書的特點如下所述。
(1)定位準確:為STM32初學者而寫,做到有的放矢。
(2)內容先進:對STM32最新發布的產品有關注,能反映計算機科學技術的新成果、新趨勢;有堅實的學術研究基礎,是教與學切磋相長的薈萃。
(3)取舍合理:做到“該有的有,不該有的沒有”,不包羅萬象、貪多求全,不直接復制照抄手冊;內容的基礎性與先進性、經典與現代、理論與實踐的關系處理得當;綜合參考了多方面相關資料,包括STM32官方培訓、STM32配套開發板、嵌入式開發工程師公眾號及博客,集多家之長,取長補短,可以更好地滿足STM32初學者的學習需求。針對上述資料,編者并沒有直接使用,教研團隊對資料及課堂學習需求進行了充分的對比分析,有針對性地進行了深度二次開發,使本書內容更適合STM32初學者學習。
(4)體系得當:針對STM32初學者的學習需求,精心設計體系,符合科學發展規律和教育認知規律,在理論與實踐、基礎與新知、知識與技能等方面有恰當、合理的布局和設計,同時注意學科交叉和文理交融。這樣,本書內容不僅體現了科學性和先進性,還做到了循序漸進、降低難度、分散難點,使讀者易于理解。
(5)風格鮮明:用通俗易懂的方法和語言敘述復雜的概念,善于運用形象思維,深入淺出,引人入勝。
本書在第2版的基礎上,主要將案例由標準外設庫換成HAL庫。本書由陳志旺任主編,龐雙杰、史小華、侯英、呂宏詩任副主編。本書共13章和3個附錄,其中:第1012章由秦皇島職業技術學院龐雙杰編寫,第13章由燕山大學史小華編寫,第1章由燕山大學侯英編寫,第6章由燕山大學呂宏詩編寫,其余章節由燕山大學陳志旺編寫;全書由陳志旺統稿。書中引用了一些電子文獻,無法一一注明其出處,在此向原作者表示感謝。
由于編者水平有限,書中難免存在疏漏與不妥之處,歡迎廣大讀者朋友不吝賜教。
編者 |
內容簡介:本書介紹了意法半導體(STMicroelectronics,ST)公司的32位基于ARM CM3內核的STM32單片機原理與實踐。本書以培養學生的動手能力和增強學生的工程素養為目的,按照項目驅動的思路展開教學與實踐學習,以Nucleo開發板上的程序為實例,將STM32單片機的外圍引腳特性、內部結構與原理、片上外設資源、開發設計方法和應用軟件編程、FreeRTOS操作系統原理及應用等知識呈現給讀者。 |
目錄:第1章 嵌入式系統概述
1.1 計算思維
1.2 嵌入式系統簡介
1.2.1 嵌入式系統的定義
1.2.2 嵌入式系統的特點
1.2.3 嵌入式系統的分類
1.2.4 嵌入式系統的發展
1.3 ARM體系結構及微處理器系列
1.3.1 ARM公司簡介
1.3.2 ARM體系結構簡介
1.4 STM32系列微控制器簡介
1.4.1 STM32芯片
1.4.2 ST的生態系統
第2章 CM3體系結構
2.1 CM3內核結構
2.2 CM3處理器的工作模式及狀態
2.3 CM3寄存器
2.4 總線接口
2.5 存儲器的組織與映射
2.5.1 存儲器的格式
2.5.2 存儲器的層次結構
2.5.3 CM3存儲器
2.5.4 STM32存儲器
2.5.5 位綁定操作
2.6 指令集
2.6.1 ARM指令集
2.6.2 Thumb指令集
2.6.3 Thumb-2指令集
2.7 流水線
2.8 異常和中斷
2.9 存儲器保護單元
2.10 STM32微控制器概述
2.11 Nucleo-F103RB開發板
第3章 STM32最小系統
3.1 電源電路
3.1.1 供電方案
3.1.2 電源管理器
3.1.3 低功耗模式
3.2 時鐘電路
3.2.1 HSE和HSI
3.2.2 PLL
3.2.3 LSE和LSI
3.2.4 系統時鐘SYSCLK
3.2.5 解析SystemClock_Config()函數
3.2.6 RCC寄存器
3.2.7 STM32時鐘常見問題
3.3 復位電路
3.4 STM32啟動
3.5 程序下載電路
3.6 STM32最小系統
第4章 STM32程序設計
4.1 嵌入式軟件層次結構
4.2 Cortex微控制器軟件接口標準
4.3 HAL庫
4.3.1 HAL庫簡介
4.3.2 STM32CubeF1軟件包主要文件夾
4.3.3 STM32CubeF1軟件包主要文件簡介
4.3.4 HAL庫函數
4.4 編譯過程及MDK
4.4.1 編譯過程
4.4.2 程序的組成、存儲與運行
4.4.3 CM3指令集案例
第5章 GPIO的原理及應用
5.1 計算機接口概述
5.2 GPIO的硬件結構和功能
5.2.1 GPIO的硬件結構
5.2.2 復用功能
5.2.3 GPIO輸入功能
5.2.4 GPIO輸出功能
5.2.5 GPIO速度選擇
5.2.6 鉗位功能
5.3 GPIO寄存器映射
5.3.1 GPIO寄存器
5.3.2 用C語言對寄存器進行封裝
5.4 GPIO的HAL庫函數
5.5 HAL庫函數與寄存器的關系
5.5.1 解析HAL_Init()函數
5.5.2 解析MX_GPIO_Init()函數
5.5.3 解析HAL_GPIO_Init()函數
5.5.4 解析__HAL_RCC_GPIOA_CLK_ENABLE()函數
5.6 GPIO應用實例
5.6.1 STM32CubeMX配置步驟
5.6.2 新建例程1:直接數字地址
5.6.3 新建例程2:ODR寄存器法
5.6.4 新建例程3:Bit-band控制法
5.6.5 新建例程4:位設置/清除寄存器法
5.6.6 新建例程5:TogglePin庫函數法
第6章 EXTI的原理及應用
6.1 中斷和子程序
6.2 STM32中斷通道
6.3 STM32中斷的過程
6.4 NVIC硬件結構及軟件配置
6.4.1 NVIC硬件結構
6.4.2 STM32中斷優先級
6.4.3 中斷向量表
6.4.4 NVIC寄存器和系統控制寄存器
6.4.5 NVIC庫結構
6.5 EXTI硬件結構及軟件配置
6.5.1 EXTI硬件結構
6.5.2 中斷及事件
6.5.3 EXTI中斷通道和中斷源
6.5.4 EXTI寄存器
6.5.5 EXTI庫函數
6.6 EXTI應用實例
6.6.1 按鍵中斷
6.6.2 中斷嵌套實例
第7章 USART的原理及應用
7.1 接口重映射
7.2 USART接口的功能和結構
7.2.1 USART接口的功能
7.2.2 USART接口的結構
7.3 USART幀格式
7.4 波特率設置
7.5 硬件流控制
7.6 USART中斷請求
7.7 USART寄存器
7.8 USART初始化HAL庫函數
7.9 STM32串口新功能
7.10 USART應用實例
7.10.1 直接傳送方式
7.10.2 中斷傳送方式
7.10.3 串口Echo回應程序
7.10.4 利用printf()的串口編程
第8章 定時器的原理及應用
8.1 STM32定時器概述
8.2 STM32定時器功能模塊
8.3 通用定時器TIMx的功能
8.4 通用定時器TIMx的結構
8.4.1 時鐘源選擇
8.4.2 時基單元
8.4.3 捕獲和比較通道
8.4.4 計數器模式
8.4.5 定時時間的計算
8.4.6 定時器中斷
8.5 通用定時器TIMx的寄存器
8.6 TIMx初始化HAL庫函數
8.7 TIM2應用實例
8.7.1 秒表
8.7.2 輸出比較實例1
8.7.3 輸出比較實例2
8.7.4 PWM輸出
8.7.5 PWM輸入捕獲
8.8 系統時鐘SysTick簡介
8.9 SysTick寄存器
8.9.1 SYSTICKCSR
8.9.2 SYSTICKRVR
8.9.3 SYSTICKCVR
8.9.4 SYSTICKCALVR
8.10 SysTick庫函數源代碼
8.11 SysTick應用實例
第9章 DMA的原理及應用
9.1 DMA簡介
9.2 DMA的功能及結構
9.2.1 DMA的功能
9.2.2 DMA的結構
9.3 DMA相關寄存器
9.4 DMA初始化HAL庫函數
9.5 DMA應用實例
第10章 ADC的原理及應用
10.1 ADC的功能和結構
10.1.1 ADC的基本概念
10.1.2 ADC的功能
10.1.3 ADC的結構
10.2 ADC的工作模式
10.3 數據對齊
10.4 ADC中斷
10.5 ADC相關寄存器
10.6 ADC初始化HAL庫函數
10.7 ADC應用實例
第11章 實時操作系統基礎
11.1 操作系統
11.1.1 操作系統的層次
11.1.2 操作系統的功能
11.1.3 操作系統的服務
11.2 進程和線程
11.2.1 任務
11.2.2 進程
11.2.3 線程
11.3 實時操作系統
11.3.1 可剝奪型操作系統和不可剝奪型操作系統
11.3.2 實時操作系統的定義
11.3.3 實時操作系統的特點
11.3.4 實時操作系統的幾個評價指標
11.3.5 通用操作系統與實時操作系統的比較
11.4 嵌入式開發軟件框架
11.4.1 前后臺執行結構
11.4.2 時間片輪詢結構
11.4.3 操作系統結構
第12章 FreeRTOS任務應用實例
12.1 CMSIS-RTOS中的FreeRTOS操作系統
12.2 任務簡介
12.2.1 任務函數
12.2.2 任務的狀態
12.2.3 任務控制塊
12.2.4 任務優先級
12.2.5 時鐘節拍
12.2.6 空閑任務的任務函數
12.3 任務管理
12.3.1 創建任務
12.3.2 刪除任務
12.3.3 任務掛起和恢復函數
12.4 任務調度
12.4.1 任務調度簡介
12.4.2 FreeRTOS調度算法分類
12.4.3 FreeRTOS搶占式調度
12.4.4 搶占式調度案例說明
12.5 時間管理
12.5.1 相對延時
12.5.2 絕對延時
12.6 互斥信號量
12.7 利用隊列的任務間通信
12.8 任務調度實例
12.8.1 程序功能
12.8.2 Cube主要設置
12.8.3 程序源代碼分析
第13章 LED和按鍵綜合設計實例
13.1 嵌入式系統產品開發簡介
13.1.1 產品設計流程
13.1.2 優秀的產品設計及工程師的要求
13.1.3 嵌入式系統設計流程
13.2 LED驅動綜合實例
13.2.1 利用C語言實現面向對象程序設計
13.2.2 LED多狀態實例功能
13.2.3 功能分析
13.2.4 案例代碼
13.2.5 代碼分析
13.3 鍵盤驅動綜合實例
13.3.1 按鍵多狀態實例功能
13.3.2 實例代碼
13.3.3 代碼分析
13.3.4 代碼改進
附錄A 嵌入式系統常用縮寫和關于端口讀/寫的縮寫表示
附錄B CM3指令清單
附錄C Nucleo -F103RB開發板原理圖
參考文獻 |
序: |