RT-Thread應用開發實戰——基於STM32智能小車
內容描述
本書專注於實時操作系統RT Thread的應用開發實踐,使用目前廣泛應用的STM32芯片並結合智能小車功能開發,
力求幫助讀者在較短時間掌握RT Thread應用開發技術。
全書分為三大部分:
第一部分(第1~2章)為開發工具及系統介紹;
第二部分為RT Thread內核基礎應用(第3~7章),從應用實踐的角度,結合智能小車具體功能實現,
介紹RT Thread的線程、線程調度、線程同步、時鐘管理、線程間通信等操作系統內容,
力求通過項目實踐的形式使讀者深刻理解RT Thread內核;
第三部分(第8~14章)為RT Thread各種常用I/O 設備的應用開發實例,
通過這些實例,讀者可以熟練掌握RT Thread設備驅動接口。
本書可作為高等職業院校電信類或計算機類相關專業教材,
亦可作為相關工程技術人員的參考用書。
目錄大綱
第1章搭建開發環境
1.1RTThreadStudio集成開發環境安裝1
1.1.1獲取RTThreadStudio安裝包1
1.1.2開始安裝RTThreadStudio軟件包2
1.1.3下載SDK5
1.2STM32CubeMX圖形化配置工具安裝7
1.2.1獲取安裝包7
1.2.2安裝軟件9
1.2.3安裝固件庫11
練習111
第2章初識RTThread實時操作系統
2.1RTThread介紹12
2.2如何新建RTThread項目13
2.3認識RTThread項目結構14
2.4配置RTThread項目15
2.5構建項目18
2.6下載程序19
2.7使用串口終端工具與RTThread系統進行交互21
練習222
第3章PIN設備的使用
3.1RTThreadPIN設備介紹23
3.1.1引腳編號的獲取24
3.1.2設置引腳的輸入/輸出模式24
3.1.3設置引腳的電平值25
3.1.4讀取引腳的電平值25
3.1.5綁定引腳中斷回調函數26
3.1.6脫離引腳中斷回調函數26
3.1.7使能中斷27
3.2任務31車燈雙閃控制27
3.2.1硬件設計27
3.2.2業務分析28
3.2.3程序設計28
3.2.4功能測試28
3.3任務32小車喇叭控制(查詢法)29
3.3.1硬件設計29
3.3.2程序設計29
3.3.3下載測試31
3.4任務33小車喇叭控制(中斷回調法)31
3.4.1硬件設計31
3.4.2程序設計31
3.4.3下載測試32
3.5任務34同時實現車燈閃爍和按鍵控制喇叭33
3.5.1硬件設計33
3.5.2軟件設計33
3.5.3程序測試35
習題335
第4章線程及其應用
4.1線程介紹37
4.1.1線程的概念37
4.1.2線程的調度38
4.1.3上下文切換38
4.1.4線程的重要屬性39
4.1.5RTThread命令查看系統線程信息42
4.2RTThread線程管理接口介紹43
4.3任務41使用多線程的方式同時實現車燈閃爍和按鍵控制喇叭(掃描法)45
4.3.1RTThread相關接口函數45
4.3.2代碼實現48
4.3.3程序測試54
4.4任務42暫停或恢復車燈閃爍功能55
4.4.1RTThread相關接口函數55
4.4.2程序設計56
4.4.3程序測試60
4.5任務43多線程運行機制實驗61
4.5.1RTThread相關接口函數61
4.5.2程序設計62
4.5.3程序測試64
4.6任務44線程主動讓出CPU資源66
4.6.1RTThread相關接口函數67
4.6.2程序設計67
4.6.3程序測試70
4.7任務45空閒線程中運行LED燈的閃爍71
4.7.1RTThread中設置和刪除空閒鉤子函數71
4.7.2程序設計72
4.7.3程序測試73
練習473
第5章線程同步及其應用
5.1線程同步的概念75
5.2信號量76
5.2.1RTThread信號量的工作機制77
5.2.2創建信號量78
5.2.3獲取信號量79
5.2.4信號量釋放79
5.3任務51使用按鍵控制喇叭(中斷法)80
5.3.1程序設計80
5.3.2程序測試84
5.4信號量的應用場合84
5.5任務52矩陣鍵盤按鍵識別(中斷法)85
5.5.1硬件設計85
5.5.2程序設計86
5.5.3程序測試91
練習591
第6章時鐘管理與應用
6.1RTThread嘀嗒時鐘相關函數介紹93
6.1.1毫秒級延時94
6.1.2微秒級延時94
6.1.3獲取系統當前時間94
6.1.4獲取更高精度的時間95
6.2任務61超聲波測距(電平掃描方法)96
6.2.1超聲波測距原理介紹96
6.2.2硬件設計96
6.2.3軟件設計97
6.2.4程序測試102
6.3RTThread系統定時器102
6.3.1創建和刪除定時器103
6.3.2初始化和脫離定時器104
6.3.3啟動和停止定時器105
6.3.4控制定時器106
6.4任務62使用定時器實現車燈的閃爍106
6.4.1軟件設計106
6.4.2程序測試108
6.5任務63超聲波測距(使用定時器改進任務61)108
6.5.1程序設計108
6.5.2程序測試___109
6.6任務64超聲波測距(引腳中斷方式)110
6.6.1程序設計110
6.6.2程序測試114
練習6115
第7章線程間通信
7.1郵箱116
7.1.1郵箱的工作機制117
7.1.2RTThread郵箱的相關接口函數117
7.2任務71獨立按鍵控制蜂鳴器開關(使用郵箱)121
7.2.1硬件設計121
7.2.2軟件設計121
7.2.3程序測試126
7.3任務72使用郵箱發送大於4字節的消息126
7.3.1程序編寫126
7.3.2程序測試126
7.4消息隊列127
7.4.1消息隊列的工作機制127
7.4.2消息隊列相關接口函數128
7.5任務73獨立按鍵控制蜂鳴器開關(使用消息隊列)132
7.5.1硬件設計132
7.5.2程序設計132
7.5.3測試135
7.6信號136
練習7138
第8章RTThread板級驅動(BSP)的配置
8.1I/O設備模型139
8.2RTThread中設備驅動相關配置141
8.2.1使用CubeMX使能硬件設備,生成設備初始化代碼141
8.2.2RTThreadSettings開啟設備驅動程序146
8.2.3在drivers/board.h中定義接口相關的宏147
練習8148
第9章使用PWM設備控制小車行駛速度
9.1RTThread的PWM設備編程介紹149
9.1.1查找PWM設備150
9.1.2設置PWM週期和脈衝寬度150
9.1.3使能和關閉PWM設備通道151
9.2任務91使用PWM驅動小車車輪轉動151
9.2.1硬件設計151
9.2.2工程建立和BSP配置152
9.2.3程序設計153
9.2.4編譯測試153
9.3任務92小車前進和後退154
9.3.1程序設計與代碼編寫155
9.3.2測試158
練習9158
第10章使用ADC設備測量電池電量
10.1A/D轉換介紹159
10.1.1A/D轉換的原理159
10.1.2A/D轉換的計算160
10.2RTThreadADC設備接口介紹161
10.2.1查找ADC設備161
10.2.2使能ADC通道161
10.2.3讀取ADC通道採樣值162
10.2.4關閉ADC通道162
10.3任務101使用終端命令讀取ADC設備採樣值162
10.3.1硬件設計162
10.3.2RTThread工程建立和BSP配置163
10.3.3編譯及測試163
10.4任務102編寫程序,實現電壓測量並打印電壓值164
10.4.1程序設計164
10.4.2編譯、下載、測試165
練習10166
第11章使用I2C設備驅動OLED顯示屏
11.1I2C總線介紹167
11.1.1I2C總線構成167
11.1.2I2C總線的信號類型和數據傳輸時序168
11.2RTThreadI2C總線接口171
11.2.1查找I2C總線設備171
11.2.2數據傳輸172
11.3OLED操作介紹173
11.3.1從機地址173
11.3.2數據格式174
11.3.3GDDRAM結構175
11.3.4三種GDDRAM尋址模式175
11.3.5OLED指令177
11.4任務111OLED顯示實現中英文178
11.4.1硬件設計178
11.4.2工程建立與配置178
11.4.3程序編寫179
11.4.4測試188
練習11188
第12章使用脈衝碼盤設備測量小車行駛速度
12.1編碼器及其測速原理189
12.1.1編碼器的分類189
12.1.2編碼器的參數191
12.1.3編碼器測速原理191
12.2任務121車輪轉動方向測量193
12.2.1硬件設計193
12.2.2程序設計193
12.2.3測試196
12.3任務122採用M法測量小車車輪轉動速度196
12.3.1硬件設計196
12.3.2軟件設計196
12.3.3測試197
12.4任務123同時測量方向和速度198
12.4.1程序設計198
12.4.2測試201
12.5任務124使用PulseEncoder設備進行測速201
12.5.1硬件設計201
12.5.2新建項目及BSP配置201
12.5.3代碼編寫203
12.5.4測試204
練習12205
第13章使用Sensor設備進行溫度測量
13.1單線程協議簡介206
13.2DS18B20數字溫度傳感器208
13.3任務131使用DS18B20進行溫度採樣210
13.3.1硬件設計210
13.3.2軟件設計210
13.3.3測試214
13.4任務132把DS18B20設備註冊為RTThread的Sensor設備215
13.4.1硬件設計215
13.4.2項目創建與配置215
13.4.3程序設計215
13.4.4測試219
13.5任務133使用Sensor設備驅動層接口讀取溫度值220
13.5.1程序設計220
13.5.2測試222
練習13222
第14章遙控器控制小車行走
14.1紅外接收原理223
14.1.1紅外通信系統223
14.1.2認識紅外接收頭224
14.1.3紅外遙控編碼協議224
14.2任務141識別紅外遙控器按鍵信號225
14.2.1硬件設計225
14.2.2創建項目及配置226
14.2.3程序設計229
14.2.4測試230
練習14231
參考文獻232