《面向人工智能的嵌入式設計與開發(fā)》內(nèi)容包括嵌入式介紹、GPIO端口基本使用、C語言編程基礎、GPIO端口輸入模式、串口通信、中斷系統(tǒng)、Systick定時器、LCD液晶顯示屏、觸摸屏驅(qū)動、RTC實時時鐘、溫濕度傳感器和實戰(zhàn)項目。
《面向人工智能的嵌入式設計與開發(fā)》可供電氣、自動化類專業(yè)本、?普n程教學和大學生創(chuàng)新實踐使用和參考。
《面向人工智能的嵌入式設計與開發(fā)》課后資料可掃描二維碼查看和下載,讀者可自行購買相關材料進行制作。
ARM V7是Cortex-M3的組成硬件之一,它的主頻運行速度為72MHz,不但可以使用 Thumb-2 指令集,還具備其他特殊的新性質(zhì)。與 ARM7 TDMI進行對比,Cortex-M3具備性能更加強大、代碼密度更高、位帶操作、中斷為可嵌套使用、成本小、功耗小等優(yōu)勢。STM32系列芯片由意法半導體公司(STMicroelectronics)生產(chǎn),是當下非常熱門的芯片。STM32系列產(chǎn)品基于超低功耗的ARM Cortex-M3處理器內(nèi)核,采用意法半導體獨有的兩大節(jié)能技術,在所有產(chǎn)品中,大量的管腳、外設和軟件都是可以共同使用的,兼容性強大,開發(fā)人員可以通過它的兼容性來極大地提高設計的靈活性。Cortex-M3核的處理器的特點就是用于低端的設備控制。與89C51相比,STM32具有13級的流水線指令處理能力,集成了許多外設,以寄存器的方式操作,大大提高了芯片執(zhí)行速度,具有響應快的特點。內(nèi)部的RAM、ROM的空間也比較大,可以下載和運行更多代碼,還可以在小型系統(tǒng)中使用,有利于多任務操作。由此可見,STM32的前景非常好,這幾年ST公司在中國大力推廣它的產(chǎn)品,國內(nèi)部分半導體廠商也在生產(chǎn)類似芯片,更能體現(xiàn)出STM32在未來幾年中在電子行業(yè)里受重視的程度。另外,芯片的價格很低。
STM32具有以下獨有優(yōu)勢。
1.超低價格。STM32最大的優(yōu)勢是,它擁有32位機的性能,但僅是8位機的價格。
2.很多外圍設備。TIMER、RTC、FSMC、IIC、USB、SPI、IIS、SDIO、CAN、DAC、ADC、DMA等許多外設都可以連在STM32上,從這些外設可以看出,STM32的集成度很高。
3.芯片種類繁多。M3是STM32的一種內(nèi)核,這種內(nèi)核有F100、F101、F102、F103、F105、F107、F207、F217共8個系列,這8個系列又有上百種型號,而且還有不同的封裝可供選擇,如QFN、LQFP、BGA等。與此同時,M3芯片中還有功耗極低的STM32L和可以進行無線通信的STM32W。
4.性能實時性好。STM32中的所有管腳都可以當作中斷輸入,共有84個中斷,因而有16級可編程優(yōu)先級。
5.功耗控制極為優(yōu)秀。STM32的每個外設都有獨立控制開關的時鐘,當功耗太高時,可以關閉不用的外設時鐘,這樣就能降低功耗。
6.開發(fā)成本低。STM32下載程序時只需要一個串口即可,無須花費大量金錢購買價格極高的仿真器,而且STM32可以使用SWD和JTAG兩種調(diào)試口。當使用SWD實現(xiàn)仿真調(diào)試時,只需要兩個IO口,極為方便。
本書由趙志桓著,同時得到了深圳信盈達科技有限公司牛樂樂總經(jīng)理、濟南信盈達電子技術有限公司袁魁總經(jīng)理、何文賓工程師、鄒竟飛工程師和山東農(nóng)業(yè)工程學院廖希杰的大力支持,在此表示衷心的感謝。
由于時間倉促,書中難免有不足之處,懇請廣大讀者不吝批評指正。
著者
2019年10月
趙志桓,山東農(nóng)業(yè)工程學院副教授,負責學校智能感知與控制系統(tǒng)課程群建設,教育部信盈達CDIO協(xié)同創(chuàng)新實踐平臺實驗中心主任,山東材料學會常務理事,校工程創(chuàng)新社團指導老師。具有多年半導體項目研發(fā)經(jīng)歷。
第1章 嵌入式介紹 1
1.1 嵌入式概述 1
1.2 Cortex-M3芯片介紹 3
1.2.1 Cortex-M系列芯片分類 3
1.2.2 STM32F10x系列的命名規(guī)則 3
1.2.3 Cortex-M3芯片產(chǎn)品分類 4
1.2.4 STM32F103ZET6芯片內(nèi)部資源 4
1.2.5 STM32F103ZET6內(nèi)部結(jié)構(gòu) 5
1.3 STM32F10x最小系統(tǒng) 6
1.4 嵌入式開發(fā)軟件安裝 7
1.4.1 編譯軟件安裝 7
1.4.2 驅(qū)動程序安裝 8
1.4.3 下載測試 9
課后資料 9
第2章 GPIO端口基本使用 10
2.1 STM32F10x芯片GPIO模塊介紹 10
2.2 STM32F10x芯片GPIO端口功能介紹 11
2.2.1 STM32F10x芯片GPIO端口功能 11
2.2.2 STM32F10x芯片GPIO端口內(nèi)部框圖 11
2.2.3 STM32F10x芯片時鐘使能 13
2.2.4 STM32F10x芯片GPIO端口相關庫函數(shù) 14
2.3 GPIO模塊程序軟件設計(驅(qū)動LED) 18
思考 19
課后資料 19
第3章 C語言編程基礎 20
3.1 C語言體系介紹 20
3.1.1 C語言主要特點 20
3.1.2 嵌入式C程序基本結(jié)構(gòu) 22
3.1.3 C語言編程規(guī)范 22
3.2 嵌入式C語言基本數(shù)據(jù)類型 23
3.3 數(shù)據(jù)常量和數(shù)據(jù)變量 25
3.4 C語言運算符與表達式 26
3.4.1 運算符與表達式的概念 26
3.4.2 邏輯運算符 27
3.4.3 位運算符 28
3.4.4 運算符優(yōu)先級 28
3.4.5 數(shù)據(jù)類型轉(zhuǎn)換運算 28
3.5 函數(shù) 29
3.5.1 函數(shù)模型 30
3.5.2 實際參數(shù) 30
3.5.3 函數(shù)應用 30
3.5.4 函數(shù)和變量的作用范圍 31
3.6 宏定義與模塊化編程 32
3.6.1 宏定義 32
3.6.2 條件編譯 32
3.6.3 模塊化編程 33
3.7 模塊化編程軟件設計 34
思考 37
課后資料 37
第4章 GPIO端口輸入模式 38
4.1 嵌入式C語言基本結(jié)構(gòu) 38
4.1.1 順序結(jié)構(gòu) 38
4.1.2 選擇結(jié)構(gòu) 39
4.1.3 循環(huán)結(jié)構(gòu) 41
4.1.4 轉(zhuǎn)移語句 43
4.2 嵌入式單片機輸入系統(tǒng) 44
4.2.1 單片機按鍵介紹 44
4.2.2 GPIO輸入功能程序設計 45
4.2.3 按鍵掃描程序設計 46
思考 49
課后資料 49
第5章 串口通信 50
5.1 通用USART通信介紹 50
5.1.1 通信的概述 50
5.1.2 串行通信分類 51
5.1.3 串行通信數(shù)據(jù)的傳輸速度 52
5.1.4 串行通信工作方式 53
5.1.5 串口發(fā)送數(shù)據(jù)的格式 53
5.2 STM32F10x芯片USART模塊介紹 53
5.2.1 STM32F10x芯片USART模塊概述 53
5.2.2 STM32F10x芯片USART模塊內(nèi)部框圖 54
5.2.3 STM32F10x芯片USART模塊特征 56
5.3 STM32F10x外設管腳復用 57
5.4 STM32F10x芯片USART模塊相關庫函數(shù) 58
5.4.1 USART_Init函數(shù) 58
5.4.2 USART_Cmd函數(shù) 60
5.4.3 USART_ITConfig函數(shù) 60
5.4.4 USART_SendData函數(shù) 61
5.4.5 USART_ReceiveData函數(shù) 61
5.4.6 USART_GetFlagStatus函數(shù) 62
5.4.7 USART_ClearFlag函數(shù) 62
5.4.8 USART_GetITStatus函數(shù) 63
5.4.9 USART_ClearITPendingBit函數(shù) 63
5.5 USART模塊程序軟件設計 64
5.5.1 USART_1硬件設置 64
5.5.2 USART1模塊軟件設計 64
思考 68
課后資料 68
第6章 中斷系統(tǒng) 69
6.1 中斷介紹 69
6.1.1 中斷和中斷源的概念 69
6.1.2 中斷執(zhí)行過程 70
6.1.3 中斷使用的意義 70
6.1.4 中斷優(yōu)先級和中斷嵌套 71
6.2 STM32F10x中斷系統(tǒng)介紹 71
6.2.1 NVIC控制器介紹 71
6.2.2 STM32F10x異常向量表 72
6.2.3 STM32F10x中斷優(yōu)先級設置 75
6.3 STM32F10x中斷系統(tǒng)相關庫函數(shù) 75
6.3.1 NVIC_Init函數(shù) 75
6.3.2 NVIC_PriorityGroupConfig函數(shù) 76
6.4 中斷軟件示例 77
6.4.1 中斷服務函數(shù)編寫原則 77
6.4.2 NVIC中斷軟件設計 77
思考 79
課后資料 79
第7章 SysTick定時器 80
7.1 SysTick定時器介紹 80
7.1.1 SysTick定時器概述 80
7.1.2 STM32F10x系列SysTick定時器概述 80
7.1.3 SysTick定時器初始值計算 81
7.2 SysTick定時器相關庫函數(shù) 81
7.2.1 SysTick_CLKSourceConfig函數(shù) 82
7.2.2 SysTick_Config函數(shù) 82
7.2.3 SysTick定時器軟件設計 82
課后資料 85
第8章 LCD液晶顯示屏 86
8.1 LCD液晶顯示屏介紹 86
8.1.1 單片機常見顯示設備 86
8.1.2 LCD液晶顯示屏顯示系統(tǒng) 87
8.1.3 彩色LCD液晶顯示屏參數(shù) 87
8.1.4 ZZH Cortex-M開發(fā)板LCD模塊介紹 87
8.2 液晶顯示控制器(ILI9486) 88
8.2.1 ILI9486控制器協(xié)議介紹 88
8.2.2 ILI9486控制器顏色設置 89
8.2.3 ILI9486控制器初始化 90
8.2.4 ILI9486控制器控制命令 90
8.3 LCD液晶顯示屏字模軟件應用 92
8.4 LCD液晶顯示屏程序設計 95
課后資料 96
第9章 觸摸屏驅(qū)動 97
9.1 觸摸屏的工作原理和類型 97
9.2 觸摸屏控制芯片XPT2046 98
9.2.1 觸摸屏硬件連接 98
9.2.2 XPT2046控制器應用 98
9.3 觸摸屏校準 103
9.3.1 觸摸屏校準的目的和原理 103
9.3.2 觸摸屏校準步驟 103
9.3.3 觸摸屏軟件設計 104
課后資料 105
第10章 RTC實時時鐘 106
10.1 RTC實時時鐘介紹 106
10.1.1 RTC實時時鐘概念 106
10.1.2 RTC實時時鐘時間基準 107
10.1.3 常用RTC外設芯片 107
10.2 STM32F10x芯片RTC模塊介紹 107
10.2.1 STM32F10x芯片RTC模塊概述 107
10.2.2 STM32F10x芯片備份存儲器(BKP)介紹 108
10.2.3 STM32F10x芯片RTC模塊內(nèi)部框圖 109
10.3 STM32F10x芯片RTC模塊相關庫函數(shù) 110
10.3.1 RTC_ITConfig函數(shù) 110
10.3.2 RTC_EnterConfigMod函數(shù) 110
10.3.3 RTC_ExitConfigMode函數(shù) 111
10.3.4 RTC_GetCounter函數(shù) 111
10.3.5 RTC_WaitForLastTask函數(shù) 111
10.3.6 RTC_SetCounter函數(shù) 111
10.3.7 RTC_SetPrescaler函數(shù) 112
10.3.8 RTC_ SetAlarm函數(shù) 112
10.3.9 RTC_WaitForSynchro函數(shù) 112
10.3.10 RTC_GetFlagStatus函數(shù) 112
10.3.11 RTC_ClearFlag函數(shù) 113
10.3.12 RTC_GetITStatus函數(shù) 113
10.3.13 RTC_ClearITPendingBit函數(shù) 113
10.3.14 BKP_ReadBackupRegister函數(shù) 114
10.3.15 BKP_WriteBackupRegister函數(shù) 114
10.3.16 PWR_BackupAccessCmd函數(shù) 114
10.3.17 RCC_LSEConfig函數(shù) 115
10.3.18 RCC_RTCCLKConfig函數(shù) 115
10.3.19 RCC_RTCCLKCmd函數(shù) 116
10.4 RTC軟件設計 116
課后資料 123
第11章 溫濕度傳感器 124
11.1 DHT11產(chǎn)品介紹 124
11.1.1 DHT11概述 124
11.1.2 應用領域 124
11.1.3 傳感器性能說明 125
11.1.4 測量分辨率 125
11.1.5 電氣特性 125
11.2 模塊接口說明 126
11.2.1 模塊連接電路圖 126
11.2.2 管腳說明 126
11.2.3 電源管腳 127
11.2.4 DHT11數(shù)據(jù)傳輸流程 127
11.2.5 主機復位信號和DHT11響應信號 127
11.2.6 DHT11數(shù)據(jù)表示方法 128
11.2.7 DHT11數(shù)據(jù)結(jié)構(gòu) 129
11.3 DHT11軟件設計 129
課后資料 133
參考文獻 134
附錄 136
附錄A Cortex-M3開發(fā)板介紹 136
附錄A.1 Cortex-M3開發(fā)板資源圖 136
附錄A.2 Cortex-M3開發(fā)板資源介紹 136
附錄B C語言運算符優(yōu)先級 139