★STM32嵌入式微控制器
★人機介面設計與應用
★DGUS彩色液晶顯示幕應用
★旋轉編碼器設計
★PWM輸出與看門狗計時器應用
★USART與Modbus通訊協定應用
★SPI與鐵電記憶體介面應用
★I2C與日曆時鐘介面應用
★CAN通訊轉換器設計
★電力網路儀表設計
★μC/OS-Ⅱ在STM32上的移植與應用
★RTC與萬年曆應用
★新型分散式控制系統設計
本書全面介紹了STM32嵌入式系統的應用實例,旨在讓讀者快速掌握STM32嵌入式系統的核心技術。從STM32嵌入式微控制器最小系統設計開始,透過多個實戰為目的的應用實例,可以輕鬆設計出符合自己需求的嵌入式系統。
本書特別介紹了DGUS彩色液晶顯示幕應用實例,其能方便地顯示各種中文字、數字、符號、圖形等,並且易於修改,改變了傳統液晶顯示器的開發方式,節省了大量人力物力。微控制器透過UART串列通訊介面發送命令,透過分頁切換改變顯示內容。
書中還包含了旋轉編碼器設計實例、CAN通訊轉換器設計實例、電力網路儀表設計實例及新型分散式控制系統(DCS)設計實例,這些實例以STM32F103為核心,各自有獨立的架構,想要學習ARM架構,從STM32是很好的開始,而本書就是你進入STM32世界的最佳工具。
作者簡介:
李正軍 編著
中國山東大學教授,碩士研究生導師。1984年畢業於中國山東大學數學系,同年留中國山東大學數學系任教,控制科學與工程學院「微機原理」課程負責人,並獲中國山東大學優秀教師榮譽稱號。擔任中國電氣工業協會設備網現場總線分會理事、中華人民共和國機械行業標準《低壓電氣通信規約》審稿人,全國電器設備網絡通訊介面標準化委員會委員。發表科研與教學論文50餘篇,出版著作30部。承擔企業科研課題30餘項,主要研究方向包括嵌入式系統、計算機控制技術、現場總線應用技術、電力電子技術等。
作者序
前 言
本書主要說明STM32嵌入式系統應用實例。為了讓讀者能夠快速地掌握STM32 嵌入式系統的核心技術,本書從STM32 嵌入式微控制器最小系統設計入手,以實戰為目的,介紹了多個STM32 嵌入式系統應用實例,讀者參考書中實例,可以容易地設計出滿足自己專案要求的嵌入式系統,達到事半功倍的效果。書中應用實例涉及面廣、內容翔實,均為編者多年教學與科研成果的總結。
本書說明了很多新技術,如DGUS彩色液晶顯示幕應用實例。DGUS彩色液晶顯示幕透過DGUS開發軟體,可以非常方便地顯示中文字、數字、符號、圖形、圖片、曲線、儀表板等,特別易於今後的修改,徹底改變了液晶顯示器採用點陣顯示的開發方式,節省了大量的人力物力。不同於一般的液晶顯示器的開發方式,DGUS是一種全新的開發方式。微控制器透過UART串列通訊介面發送顯示的命令,每頁顯示的內容透過頁切換即可改變。
另外,本書還介紹了旋轉編碼器設計實例、CAN通訊轉換器設計實例、電力網路儀表設計實例和新型分散式控制系統(DCS)設計實例。這些實例以STM32F103為核心,均有獨立的架構,能夠培養讀者的系統設計能力和實踐能力。
本書的數位資源中提供了書中實例的STM32開發專案,如4×4鍵盤掃描程式碼、DMT32240C035_06WN螢幕程式碼、PWM輸出程式碼、獨立看門狗程式碼、視窗看門狗程式碼、USART串列通訊程式碼、MB85RS16操作程式碼、PCF2129操作程式碼、RS232-CAN(STM32F103) 程式碼、RTC程式碼、DCS程式碼和FBDCS(ST)_8AI程式碼。一方面,這些STM32開發專案給讀者一個完整的專案範本,讓讀者不再需要自建; 另一方面,讀者參照這些開發專案實例可以快速地完成自己的專案。
DCS程式碼是基於第13章說明的控制卡執行的,可以與FBDCS(ST)_8AI程式之間進行CAN通訊,對於初次學習μC/OS-Ⅱ的讀者,可以很容易地在μC/OS-Ⅱ作業系統上撰寫自己專案的任務,由此開啟學習μC/OS-Ⅱ作業系統的大門。同時,在μC/OS-Ⅱ作業系統的平臺上,還提供了μC/OS-Ⅱ的多個任務程式、STM32 CAN通訊程式、TCP乙太網通訊程式、基於W5100晶片的乙太網通訊程式、雙機備份程式、PID控制演算法程式、FSMC記憶體擴充程式、對DCS主站下載的設定資訊進行解析等程式。
PWM輸出程式碼、獨立看門狗程式碼、視窗看門狗程式碼、USART串列通訊程式碼和RTC程式碼是在目前使用最廣泛的正點原子STM32F103戰艦開發板上偵錯透過的; μC/OS-Ⅱ程式碼是在奮鬥STM32開發板V5上偵錯透過的。讀者也可以將上述程式碼移植到自己的STM32開發板上。
本書共13章。第1章對STM32嵌入式微控制器最小系統設計進行了概述,介紹了STM32F1系列產品系統架構和STM32F103ZET6內部結構、STM32F103ZET6的記憶體映射、STM32F103ZET6的時鐘結構、STM32F103VET6的接腳、STM32F103VET6最小系統設計; 第2章說明了人機介面設計與應用實例,包括獨立式鍵盤介面設計、矩陣式鍵盤介面設計、矩陣式鍵盤的介面實例、顯示技術的發展及其特點、LED顯示器介面設計和觸控式螢幕技術; 第3章說明了DGUS彩色液晶顯示幕應用實例,包括螢幕儲存空間、硬體設定檔、DGUS組態軟體安裝和使用說明、專案下載、DGUS螢幕顯示變數設定方法及其指令詳解和透過USB對DGUS螢幕進行偵錯; 第4章說明了旋轉編碼器設計實例,包括旋轉編碼器的介面設計、呼吸機按鍵與旋轉編碼器程式結構、按鍵掃描與旋轉編碼器中斷檢測程式和鍵值存取程式; 第5章說明了PWM輸出與看門狗計時器應用實例,包括STM32F103計時器概述、STM32通用計時器、STM32 PWM輸出應用實例和看門狗計時器; 第6章說明了USART與Modbus通訊協定應用實例,包括串列通訊基礎、STM32的USART工作原理、STM32的USART串列通訊應用實例、外部匯流排、Modbus通訊協定和PMM2000電力網路儀表Modbus-RTU通訊協定; 第7章說明了SPI與鐵電記憶體介面應用實例,包括STM32的SPI通訊原理、STM32F103的SPI工作原理和STM32的SPI與鐵電記憶體介面應用實例; 第8章說明了I2C與日曆時鐘介面應用實例,包括STM32的I2C通訊原理、STM32F103的I2C介面和STM32的I2C與日曆時鐘介面應用實例; 第9章說明了CAN通訊轉換器設計實例,包括CAN的特點、STM32的CAN匯流排概述、STM32的bxCAN工作模式、STM32的bxCAN功能描述、CAN匯流排收發器、CAN通訊轉換器概述、CAN通訊轉換器微控制器主電路的設計、CAN通訊轉換器UART驅動電路的設計、CAN通訊轉換器CAN匯流排隔離驅動電路的設計、CAN通訊轉換器USB介面電路的設計和CAN通訊轉換器的程式設計; 第10章說明了電力網路儀表設計實例,包括PMM2000電力網路儀表概述、PMM2000電力網路儀表的硬體設計、週期和頻率測量、STM32F103VBT6初始化程式、電力網路儀表的演算法、LED數位管動態顯示程式設計和PMM2000電力網路儀表在數位化變電站中的應用; 第11章說明了μC/OS-Ⅱ在STM32上的移植與應用實例,包括μC/OS-Ⅱ介紹、嵌入式控制系統的軟體平臺和μC/OS-Ⅱ的移植與應用; 第12章說明了RTC與萬年曆應用實例,包括RTC、備份暫存器(BKP)、RTC的操作和萬年曆應用實例; 第13章說明了新型分散式控制系統設計實例,包括新型DCS概述、現場控制站的組成、新型DCS通訊網路、新型DCS控制卡的硬體設計、新型DCS控制卡的軟體設計、控制演算法的設計、8通道類比量輸入電路板(8AI)的設計、8通道熱電偶電路板(8TC)的設計、8通道熱電阻電路板(8RTD)的設計、4通道類比量輸出電路板(4AO)的設計、16通道數位量輸入電路板(16DI)的設計、16通道數位量輸出電路板(16DO)的設計、8通道脈衝量量輸入電路板(8PI)的設計和嵌入式控制系統可靠性與安全性技術。
本書結合編者30多年的科學研究和教學經驗,遵循「循序漸進,理論與實踐並重,共通性與個性兼顧」的原則,將理論實踐一體化的教學方式融入其中。實踐案例由淺入深,層層遞進,在幫助讀者快速掌握某一外接裝置功能的同時,有效融合其他外部設備。
在此對本書引用的參考文獻的作者一併表示真誠的感謝。由於編者水準有限,加上時間倉促,書中不妥之處在所難免,敬請讀者們不吝指正。
編者2024年1月
前 言
本書主要說明STM32嵌入式系統應用實例。為了讓讀者能夠快速地掌握STM32 嵌入式系統的核心技術,本書從STM32 嵌入式微控制器最小系統設計入手,以實戰為目的,介紹了多個STM32 嵌入式系統應用實例,讀者參考書中實例,可以容易地設計出滿足自己專案要求的嵌入式系統,達到事半功倍的效果。書中應用實例涉及面廣、內容翔實,均為編者多年教學與科研成果的總結。
本書說明了很多新技術,如DGUS彩色液晶顯示幕應用實例。DGUS彩色液晶顯示幕透過DGUS開發軟體,可以非常方便地顯示中文字、數字、符號、圖形、圖片、曲線、儀表板等,特...
目錄
第1章 STM32嵌入式微控制器最小系統設計
1.1 STM32微控制器概述
1.1.1 STM32微控制器產品介紹
1.1.2 STM32系統性能分析
1.1.3 STM32微控制器的命名規則
1.1.4 STM32微控制器內部資源
1.1.5 STM32微控制器的選型
1.2 STM32F1系列產品系統架構和STM32F103ZET6內部架構
1.2.1 STM32F1系列產品系統架構
1.2.2 STM32F103ZET6內部架構
1.3 STM32F103ZET6的記憶體映射
1.3.1 STM32F103ZET6內建外接裝置的位址範圍
1.3.2 嵌入式SRAM
1.3.3 嵌入式Flash
1.4 STM32F103ZET6的時鐘結構
1.5 STM32F103VET6的接腳
1.6 STM32F103VET6 最小系統設計
第2章 人機介面設計與應用實例
2.1獨立式鍵盤介面設計
2.1.1 鍵盤的特點及按鍵確認
2.1.2 獨立式按鍵擴充實例
2.2矩陣式鍵盤介面設計
2.2.1 矩陣式鍵盤工作原理
2.2.2 按鍵的辨識方法
2.2.3 鍵盤的編碼
2.3矩陣式鍵盤的介面實例
2.3.1 4×4矩陣式鍵盤的硬體設計
2.3.2 4×4矩陣式鍵盤的軟體設計
2.4顯示技術的發展及其特點
2.4.1 顯示技術的發展
2.4.2 顯示元件的主要參數
2.5 LED顯示器介面設計
2.5.1 LED顯示器的結構
2.5.2 LED顯示器的掃描方式
2.6觸控式螢幕技術及其在專案中的應用
2.6.1 觸控式螢幕發展歷程
2.6.2 觸控式螢幕的工作原理
2.6.3 工業用觸控式螢幕產品介紹
2.6.4觸控式螢幕在專案中的應用
第3章 DGUS彩色液晶顯示幕應用實例
3.1螢幕儲存空間
3.1.1 資料變數空間
3.1.2 字形檔(圖示)空間
3.1.3 圖片空間
3.1.4 暫存器
3.2 硬體設定檔
3.3 DGUS組態軟體安裝
3.4 DGUS組態軟體使用說明
3.4.1 介面介紹
3.4.2 背景圖片製作方法
3.4.3 圖示製作方法及圖示檔案的生成
3.4.4 新建一個專案並進行介面設定
3.4.5 專案檔案說明
3.5專案下載
3.6 DGUS螢幕顯示變數設定方法及其指令詳解
3.6.1 序列埠資料幀架構
3.6.2 資料變數
3.6.3 文字變數
3.6.4 圖示變數
3.6.5 基本圖形變數
3.7 透過USB對DGUS螢幕進行偵錯
第4章 旋轉編碼器設計實例
4.1 旋轉編碼器的介面設計
4.1.1 旋轉編碼器的工作原理
4.1.2 旋轉編碼器的介面電路設計
4.1.3 旋轉編碼器的時序分析
4.2 呼吸機按鍵與旋轉編碼器程式結構
4.3 按鍵掃描與旋轉編碼器中斷檢測程式
4.3.1 KEY1與KEY5的按鍵掃描程式
4.3.2 KEY2與KEY3的中斷檢測程式
4.4 鍵值存取程式
4.4.1 環狀FIFO按鍵緩衝區
4.4.2 鍵值存取程式相關函數
第5章 PWM輸出與看門狗計時器應用實例
5.1 STM32F103計時器概述
5.2 STM32通用計時器
5.2.1 通用計時器簡介
5.2.2 通用計時器的主要功能
5.2.3 通用計時器的功能描述
5.2.4 通用計時器的工作模式
5.3 STM32 PWM輸出應用實例
5.3.1 PWM輸出硬體設計
5.3.2 PWM輸出軟體設計
5.4看門狗計時器
5.4.1 看門狗應用介紹
5.4.2 獨立看門狗
5.4.3 視窗看門狗
5.4.4 看門狗操作相關的函數庫
5.4.5 獨立看門狗程式設計
5.4.6 視窗看門狗程式設計
第6章 USART與Modbus通訊協定應用實例
6.1串列通訊基礎
6.1.1 串列非同步通訊資料格式
6.1.2 連接握手
6.1.3 確認
6.1.4 中斷
6.1.5 輪詢
6.2 STM32的USART工作原理
6.2.1 USART介紹
6.2.2 USART主要特性
6.2.3 USART功能概述
6.2.4 USART通訊時序
6.2.5 USART中斷
6.2.6 USART相關暫存器
6.3 STM32的USART串列通訊應用實例
6.3.1 STM32的USART的基本設定流程
6.3.2 STM32的USART串列通訊應用硬體設計
6.3.3 STM32的USART串列通訊應用軟體設計
6.4外部匯流排
6.4.1 RS-232C串列通訊介面
6.4.2 RS-485串列通訊介面
6.5 Modbus通訊協定
6.5.1 概述
6.5.2 兩種傳輸模式
6.5.3 Modbus訊息幀
6.5.4 錯誤檢測方法
6.5.5 Modbus的程式設計方法
6.6 PMM2000電力網路儀表Modbus-RTU通訊協定
6.6.1 序列埠初始化參數
6.6.2 開關量輸入
6.6.3 繼電器控制
6.6.4 錯誤處理
6.6.5 讀取標準電力參數
第7章SPI與鐵電記憶體介面應用實例
7.1 STM32的SPI通訊原理
7.1.1 SPI概述
7.1.2 SPI互連
7.2 STM32F103的SPI工作原理
7.2.1 SPI主要特徵
7.2.2 SPI內部結構
7.2.3 時鐘訊號的相位和極性
7.2.4 資料框架格式
7.2.5 設定SPI為主模式
7.3 STM32的SPI與鐵電記憶體介面應用實例
7.3.1 STM32的SPI設定流程
7.3.2 SPI與鐵電記憶體介面的硬體設計
7.3.3 SPI與鐵電記憶體介面的軟體設計
第8章 I2C與日曆時鐘介面應用實例
8.1 STM32的I2C通訊原理
8.1.1 I2C控制器概述
8.1.2 I2C匯流排的資料傳輸
8.2 STM32F103的I2C介面
8.2.1 STM32F103的I2C主要特性
8.2.2 STM32F103的I2C內部結構
8.2.3 STM32F103的模式選擇
8.3 STM32的I2C與日曆時鐘介面應用實例
8.3.1 STM32的I2C設定流程
8.3.2 I2C與日曆時鐘介面的硬體設計
8.3.3 I2C與日曆時鐘介面的軟體設計
第9章 CAN通訊轉換器設計實例
9.1CAN的特點
9.2 STM32的CAN匯流排概述
9.2.1 bxCAN的主要特點
9.2.2 CAN物理層特性
9.2.3 STM32的CAN控制器
9.2.4 STM32的CAN篩檢程式
9.3 STM32的bxCAN工作模式
9.3.1 初始化模式
9.3.2 正常模式
9.4 STM32的bxCAN功能描述
9.4.1 CAN發送流程
9.4.2 CAN接收流程
9.5 CAN匯流排收發器
9.5.1 PCA82C250/251 CAN匯流排收發器
9.5.2 TJA1051 CAN匯流排收發器
9.6 CAN通訊轉換器概述
9.7 CAN通訊轉換器微控制器主電路的設計
9.8 CAN通訊轉換器UART驅動電路的設計
9.9 CAN通訊轉換器CAN匯流排隔離驅動電路的設計
9.10 CAN通訊轉換器USB介面電路的設計
9.11 CAN通訊轉換器的程式設計
第10章電力網路儀表設計實例
10.1 PMM2000電力網路儀表概述
10.2 PMM2000電力網路儀表的硬體設計
10.2.1 主機板的硬體電路設計
10.2.2 電壓輸入電路的硬體設計
10.2.3 電流輸入電路的硬體設計
10.2.4 RS-485通訊電路的硬體設計
10.2.5 4~20mA類比訊號輸出的硬體電路設計
10.3週期和頻率測量
10.4 STM32F103VBT6初始化程式
10.4.1 NVIC中斷初始化程式
10.4.2 GPIO初始化程式
10.4.3 ADC初始化程式
10.4.4 DMA初始化程式
10.4.5 計時器初始化程式
10.5電力網路儀表的演算法
10.6 LED數位管動態顯示程式設計
10.6.1 LED數位管段碼表
10.6.2 LED指示燈狀態編碼表
10.6.3 1ms系統滴答計時器中斷服務程式
10.7 PMM2000電力網路儀表在數位化變電站中的應用
10.7.1 應用領域
10.7.2 iMeaCon數位化變電站背景電腦監控網路系統
第11章μC/OS-Ⅱ在STM32上的移植與應用實例
11.1 μC/OS-Ⅱ介紹
11.2嵌入式控制系統的軟體平臺
11.2.1 軟體平臺的選擇
11.2.2 μC/OS-Ⅱ核心排程基本原理
11.3 μC/OS-Ⅱ的移植與應用
11.3.1 μC/OS-Ⅱ的移植
11.3.2 μC/OS-Ⅱ的應用
第12章RTC與萬年曆應用實例
12.1 RTC
12.1.1 RTC簡介
12.1.2 RTC主要特性
12.1.3 RTC內部結構
12.1.4 RTC重置過程
12.2備份暫存器(BKP)
12.2.1 BKP簡介
12.2.2 BKP特性
12.2.3 BKP入侵偵測
12.3 RTC的操作
12.3.1 RTC的初始化
12.3.2 RTC時間寫入初始化
12.4 萬年曆應用實例
第13章 新型分散式控制系統設計實例
13.1新型DCS概述
13.1.1 通訊網路的要求
13.1.2 通訊網路的要求控制功能的要求
13.1.3 系統可靠性的要求
13.1.4 其他方面的要求
13.2 現場控制站的組成
13.2.1 兩個控制站的DCS結構
13.2.2 DCS測控電路板的類型
13.3 新型DCS通訊網路
13.3.1 乙太網實際連接網路
13.3.2 雙CAN通訊網路
13.4 新型DCS控制卡的硬體設計
13.4.1 控制卡的硬體組成
13.4.2 W5100網路介面晶片
13.4.3 雙機容錯電路的設計
13.4.4 記憶體擴充電路的設計
13.5 新型DCS控制卡的軟體設計
13.5.1 控制卡軟體的框架設計
13.5.2 雙機熱備份程式的設計
13.5.3 CAN通訊程式的設計
13.5.4 乙太網通訊程式的設計
13.6 控制演算法的設計
13.6.1 控制演算法的解析與執行
13.6.2 控制演算法的儲存與恢復
13.7 8通道輸入電路板(8AI)的設計
13.7.1 8通道類比量輸入電路板的功能概述
13.7.2 8通道類比量輸入電路板的硬體組成
13.7.3 8通道類比量輸入電路板微控制器主電路設計
13.7.4 22位元Σ-Δ型A/D轉換器ADS1213
13.7.5 8通道類比量輸入電路板測量與斷線檢測電路設計
13.7.6 8通道類比量輸入電路板訊號調理與通道切換電路設計
13.7.7 8通道類比量輸入電路板程式設計
13.8 8通道熱電偶輸入電路板(8TC)的設計
13.8.1 8通道熱電偶輸入電路板的功能概述
13.8.2 8通道熱電偶輸入電路板的硬體組成
13.8.3 8通道熱電偶輸入電路板測量與斷線檢測電路設計
13.8.4 8通道熱電偶輸入電路板程式設計
13.9 8通道熱電阻輸入電路板(8RTD)的設計
13.9.1 8通道熱電阻輸入電路板的功能概述
13.9.2 8通道熱電阻輸入電路板的硬體組成
13.9.3 8通道熱電阻輸入電路板測量與斷線檢測電路設計
13.9.4 8通道熱電阻輸入電路板的程式設計
13.10 4通道類比量輸出電路板(4AO)的設計
13.10.1 4通道類比量輸出電路板的功能概述
13.10.2 4通道類比量輸出電路板的硬體組成
13.10.3 4通道類比量輸出電路板PWM輸出與斷線檢測電路設計
13.10.4 4通道類比量輸出電路板自檢電路設計
13.10.5 4通道類比量電路板輸出演算法設計
13.10.6 4通道類比量電路板程式設計
13.11 16通道數位量輸入電路板(16DI)的設計
13.11.1 16通道數位量輸入電路板的功能概述
13.11.2 16通道數位量輸入電路板的硬體組成
13.11.3 16通道數位量輸入電路板訊號前置處理電路的設計
13.11.4 16通道數位量輸入電路板訊號檢測電路設計
13.11.5 16通道數位量輸入電路板程式設計
13.12 16通道數位量輸出電路板(16DO)的設計
13.12.1 16通道數位量輸出電路板的功能概述
13.12.2 16通道數位量輸出電路板的硬體組成
13.12.3 16通道數位量輸出電路板開漏極輸出電路設計
13.12.4 16通道數位量輸出電路板輸出自檢電路設計
13.12.5 16通道數位量輸出電路板外配電壓檢測電路設計
13.12.6 16通道數位量輸出電路板的程式設計
13.13 8通道脈衝量輸入電路板(8PI)的設計
13.13.1 8通道脈衝量輸入電路板的功能概述
13.13.2 8通道脈衝量輸入電路板的硬體組成
13.13.3 8通道脈衝量輸入電路板的程式設計
13.14 嵌入式控制系統可靠性與安全性技術
13.14.1 可靠性技術的發展過程
13.14.2 可靠性基本概念和術語
13.14.3 可靠性設計的內容
13.14.4 系統安全性
13.14.5 軟體可靠性
參考文獻
第1章 STM32嵌入式微控制器最小系統設計
1.1 STM32微控制器概述
1.1.1 STM32微控制器產品介紹
1.1.2 STM32系統性能分析
1.1.3 STM32微控制器的命名規則
1.1.4 STM32微控制器內部資源
1.1.5 STM32微控制器的選型
1.2 STM32F1系列產品系統架構和STM32F103ZET6內部架構
1.2.1 STM32F1系列產品系統架構
1.2.2 STM32F103ZET6內部架構
1.3 STM32F103ZET6的記憶體映射
1.3.1 STM32F103ZET6內建外接裝置的位址範圍
1.3.2 嵌入式SRAM
1.3.3 嵌入式Flash
1.4 STM32F103ZET6的時鐘結構
1.5 STM32F103VET6的接腳
1.6 STM32F...