RT-Thread設(shè)備驅(qū)動(dòng)開(kāi)發(fā)指南
定 價(jià):99 元
叢書(shū)名:電子與嵌入式系統(tǒng)設(shè)計(jì)叢書(shū)
- 作者:楊潔 郭占鑫 劉康 熊譜翔 著
- 出版時(shí)間:2023/1/1
- ISBN:9787111717454
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TP311.567-62
- 頁(yè)碼:344
- 紙張:
- 版次:
- 開(kāi)本:16
本書(shū)由自研開(kāi)源嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread核心開(kāi)發(fā)者撰寫(xiě),專(zhuān)業(yè)性毋庸置疑,系統(tǒng)講解RT-Thread設(shè)備驅(qū)動(dòng)開(kāi)發(fā)方法,剖析26種設(shè)備驅(qū)動(dòng)開(kāi)發(fā)案例,助力開(kāi)發(fā)者快速掌握RT-Thread設(shè)備驅(qū)動(dòng)開(kāi)發(fā)技能。
本書(shū)的內(nèi)容共27章,分為三篇。
基礎(chǔ)篇(第1~11章),先對(duì)RT-Thread以及設(shè)備框架進(jìn)行總體介紹,再分別介紹RT-Thread中常用的設(shè)備,包括串口、I2C、SPI等,適合剛接觸驅(qū)動(dòng)開(kāi)發(fā)的人學(xué)習(xí)。
進(jìn)階篇(第12~20章),介紹稍復(fù)雜一些的外設(shè)驅(qū)動(dòng),如SDIO、觸摸、顯示、傳感器、加解密設(shè)備等。
高級(jí)篇(第21~27章),介紹一些復(fù)雜的驅(qū)動(dòng),如網(wǎng)絡(luò)、音頻、USB、CAN等,開(kāi)發(fā)此類(lèi)設(shè)備驅(qū)動(dòng)要求開(kāi)發(fā)者本身對(duì)相應(yīng)的外設(shè)協(xié)議比較熟悉。
各章均配有配套案例,方便讀者動(dòng)手實(shí)踐和參考。
前言
第一篇 基礎(chǔ)篇
第1章 RT-Thread與設(shè)備框架
簡(jiǎn)介 2
1.1 RT-Thread概述 2
1.2 RT-Thread I/O設(shè)備框架 5
1.2.1 I/O設(shè)備模型與分類(lèi) 8
1.2.2 I/O設(shè)備管理接口 10
1.2.3 驅(qū)動(dòng)編寫(xiě)流程與規(guī)范 15
1.3 本章小結(jié) 16
第2章 UART設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 17
2.1 UART層級(jí)結(jié)構(gòu) 18
2.2 創(chuàng)建UART設(shè)備 19
2.3 實(shí)現(xiàn)UART設(shè)備的操作方法 20
2.3.1 configure:配置UART
設(shè)備 21
2.3.2 control:控制UART設(shè)備 23
2.3.3 putc:發(fā)送一個(gè)字符 26
2.3.4 getc:接收一個(gè)字符 27
2.3.5 transmit:數(shù)據(jù)發(fā)送 28
2.4 注冊(cè)UART設(shè)備 29
2.5 UART設(shè)備中斷處理 30
2.6 增加DMA模式 32
2.7 驅(qū)動(dòng)配置 37
2.8 驅(qū)動(dòng)驗(yàn)證 38
2.9 本章小結(jié) 39
第3章 PIN設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 41
3.1 PIN層級(jí)結(jié)構(gòu) 41
3.2 實(shí)現(xiàn)PIN設(shè)備的操作方法 42
3.3 注冊(cè)PIN設(shè)備 51
3.4 驅(qū)動(dòng)配置 52
3.5 驅(qū)動(dòng)驗(yàn)證 52
3.6 本章小結(jié) 53
第4章 I2C總線設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 54
4.1 I2C層級(jí)結(jié)構(gòu) 55
4.2 I2C總線設(shè)備結(jié)構(gòu) 55
4.3 硬件I2C總線設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 56
4.3.1 實(shí)現(xiàn)設(shè)備的操作方法 57
4.3.2 注冊(cè)設(shè)備 59
4.3.3 驅(qū)動(dòng)配置 60
4.3.4 驅(qū)動(dòng)驗(yàn)證 61
4.4 軟件I2C總線設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 61
4.4.1 實(shí)現(xiàn)設(shè)備的操作方法 62
4.4.2 注冊(cè)設(shè)備 66
4.5 本章小結(jié) 67
第5章 SPI/QSPI總線設(shè)備驅(qū)動(dòng)
開(kāi)發(fā) 68
5.1 SPI/QSPI層級(jí)結(jié)構(gòu) 69
5.2 SPI總線設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 70
5.2.1 創(chuàng)建SPI總線設(shè)備 70
5.2.2 實(shí)現(xiàn)SPI總線設(shè)備的操作
方法 72
5.2.3 注冊(cè)SPI總線設(shè)備 76
5.2.4 增加DMA功能 77
5.2.5 實(shí)現(xiàn)掛載SPI從設(shè)備功能 80
5.2.6 SPI總線設(shè)備驅(qū)動(dòng)配置 81
5.2.7 驅(qū)動(dòng)驗(yàn)證 82
5.3 QSPI 總線設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 83
5.3.1 創(chuàng)建QSPI總線設(shè)備 83
5.3.2 實(shí)現(xiàn)QSPI總線設(shè)備的
操作方法 84
5.3.3 注冊(cè)QSPI總線設(shè)備 87
5.3.4 實(shí)現(xiàn)掛載QSPI從設(shè)備
功能 87
5.3.5 QSPI 總線設(shè)備驅(qū)動(dòng)配置 89
5.3.6 驅(qū)動(dòng)驗(yàn)證 89
5.4 本章小結(jié) 90
第6章 HWTIMER設(shè)備驅(qū)動(dòng)
開(kāi)發(fā) 91
6.1 HWTIMER層級(jí)結(jié)構(gòu) 91
6.2 創(chuàng)建HWTIMER設(shè)備 92
6.3 實(shí)現(xiàn)HWTIMER設(shè)備的操作
方法 93
6.3.1 init:初始化設(shè)備 93
6.3.2 start:?jiǎn)?dòng)設(shè)備 95
6.3.3 stop:停止設(shè)備 96
6.3.4 count_get:獲取設(shè)備
當(dāng)前值 96
6.3.5 control:控制設(shè)備 97
6.4 注冊(cè)HWTIMER設(shè)備 98
6.5 HWTIMER設(shè)備中斷處理 99
6.6 驅(qū)動(dòng)配置 100
6.7 驅(qū)動(dòng)驗(yàn)證 101
6.8 本章小結(jié) 101
第7章 PWM設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 102
7.1 PWM層級(jí)結(jié)構(gòu) 103
7.2 創(chuàng)建PWM設(shè)備 104
7.3 實(shí)現(xiàn)PWM設(shè)備的操作方法 105
7.4 注冊(cè)PWM設(shè)備 108
7.5 驅(qū)動(dòng)配置 109
7.6 驗(yàn)證與使用 110
7.7 本章小結(jié) 111
第8章 RTC設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 112
8.1 RTC層級(jí)結(jié)構(gòu) 112
8.2 創(chuàng)建RTC設(shè)備 113
8.3 實(shí)現(xiàn)RTC設(shè)備的操作方法 113
8.3.1 為設(shè)備定義操作方法 114
8.3.2 init:初始化設(shè)備 115
8.3.3 get_secs:獲取時(shí)間 115
8.3.4 set_secs:設(shè)置時(shí)間 116
8.3.5 get_timeval:獲取timeval
結(jié)構(gòu) 117
8.4 注冊(cè)RTC設(shè)備 118
8.5 驅(qū)動(dòng)配置 119
8.6 驅(qū)動(dòng)驗(yàn)證 120
8.7 本章小結(jié) 121
第9章 ADC設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 122
9.1 ADC層級(jí)結(jié)構(gòu) 122
9.2 創(chuàng)建ADC設(shè)備 123
9.3 實(shí)現(xiàn)ADC設(shè)備的操作方法 124
9.3.1 enabled:控制ADC
通道 125
9.3.2 convert:轉(zhuǎn)換并獲取ADC
采樣值 125
9.4 注冊(cè)ADC設(shè)備 126
9.5 驅(qū)動(dòng)配置 127
9.6 驅(qū)動(dòng)驗(yàn)證 128
9.7 本章小結(jié) 129
第10章 DAC設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 130
10.1 DAC層級(jí)結(jié)構(gòu) 130
10.2 創(chuàng)建DAC設(shè)備 131
10.3 實(shí)現(xiàn)設(shè)備的操作方法 132
10.3.1 enabled:使能DAC
通道 133
10.3.2 disabled:禁止DAC
通道 133
10.3.3 convert:設(shè)置DAC輸出值
并啟動(dòng)數(shù)模轉(zhuǎn)換 134
10.4 注冊(cè)DAC設(shè)備 135
10.5 驅(qū)動(dòng)配置 136
10.6 驅(qū)動(dòng)驗(yàn)證 136
10.7 本章小結(jié) 138
第11章 WDT設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 139
11.1 WDT層級(jí)結(jié)構(gòu) 139
11.2 創(chuàng)建WDT設(shè)備 140
11.3 實(shí)現(xiàn)WDT設(shè)備的操作方法 141
11.3.1 為設(shè)備定義操作方法 141
11.3.2 init:初始化看門(mén)狗
設(shè)備 141
11.3.3 control:控制看門(mén)狗
設(shè)備 142
11.4 注冊(cè)WDT設(shè)備 143
11.5 驅(qū)動(dòng)配置 144
11.6 驅(qū)動(dòng)驗(yàn)證 145
11.7 本章小結(jié) 146
第二篇 進(jìn)階篇
第12章 SDIO 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)148
12.1 SDIO層級(jí)結(jié)構(gòu) 148
12.2 實(shí)現(xiàn)SDIO設(shè)備的操作方法 149
12.2.1 request:發(fā)送請(qǐng)求 149
12.2.2 set_iocfg:配置SDIO 154
12.2.3 get_card_status:獲取
狀態(tài) 156
12.2.4 enable_sdio_irq:配置
中斷 156
12.3 創(chuàng)建并激活SDIO主機(jī) 157
12.4 驅(qū)動(dòng)配置 159
12.5 驅(qū)動(dòng)驗(yàn)證 159
12.6 本章小結(jié) 160
第13章 Touch設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 161
13.1 Touch層級(jí)結(jié)構(gòu) 161
13.2 GT9147觸摸芯片 162
13.3 創(chuàng)建Touch設(shè)備 162
13.4 實(shí)現(xiàn)Touch設(shè)備的操作方法 163
13.4.1 touch_readpoint:讀觸摸點(diǎn)
信息 163
13.4.2 touch_control:控制
設(shè)備 166
13.5 注冊(cè)Touch設(shè)備 168
13.6 驅(qū)動(dòng)配置 169
13.7 驅(qū)動(dòng)驗(yàn)證 170
13.8 本章小結(jié) 172
第14章 LCD設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 173
14.1 LCD層級(jí)結(jié)構(gòu) 173
14.2 創(chuàng)建LCD設(shè)備 174
14.3 實(shí)現(xiàn)LCD設(shè)備的操作方法 174
14.3.1 init:初始化LCD設(shè)備 175
14.3.2 control:控制LCD設(shè)備 175
14.4 實(shí)現(xiàn)繪圖的操作方法 177
14.4.1 set_pixel:畫(huà)點(diǎn) 178
14.4.2 get_pixel:讀取像素點(diǎn)
顏色 178
14.4.3 draw_hline:畫(huà)橫線 179
14.4.4 draw_vline:畫(huà)豎線 180
14.4.5 blit_line:畫(huà)雜色水
平線 181
14.5 注冊(cè)LCD設(shè)備 182
14.6 驅(qū)動(dòng)配置 183
14.7 驅(qū)動(dòng)驗(yàn)證 184
14.8 本章小結(jié) 185
第15章 傳感器設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 186
15.1 傳感器層級(jí)結(jié)構(gòu) 186
15.2 創(chuàng)建傳感器設(shè)備 187
15.3 實(shí)現(xiàn)傳感器設(shè)備的操作方法 188
15.3.1 fetch_data:獲取傳感器
數(shù)據(jù) 188
15.3.2 control:控制傳感器
設(shè)備 189
15.4 設(shè)備注冊(cè) 191
15.5 驅(qū)動(dòng)配置 193
15.6 驅(qū)動(dòng)驗(yàn)證 194
15.7 本章小結(jié) 195
第16章 MTD NOR設(shè)備驅(qū)動(dòng)
開(kāi)發(fā) 196
16.1 MTD NOR層級(jí)結(jié)構(gòu) 196
16.2 創(chuàng)建MTD NOR設(shè)備 197
16.3 實(shí)現(xiàn)MTD NOR設(shè)備的操作
方法 198
16.3.1 read_id:讀取設(shè)備ID 198
16.3.2 read:從設(shè)備中讀數(shù)據(jù) 199
16.3.3 write:向設(shè)備中寫(xiě)數(shù)據(jù) 200
16.3.4 erase_block:擦除數(shù)據(jù) 201
16.4 注冊(cè)MTD NOR設(shè)備 202
16.5 驅(qū)動(dòng)配置 204
16.6 驅(qū)動(dòng)驗(yàn)證 204
16.7 本章小結(jié) 205
第17章 MTD NAND設(shè)備驅(qū)動(dòng)
開(kāi)發(fā) 206
17.1 MTD NAND層級(jí)結(jié)構(gòu) 206
17.2 創(chuàng)建MTD NAND設(shè)備 207
17.3 實(shí)現(xiàn)MTD NAND設(shè)備的操作
方法 207
17.3.1 read_id:讀取設(shè)備ID 208
17.3.2 read_page:從設(shè)備中讀
數(shù)據(jù) 208
17.3.3 write_page:向設(shè)備中寫(xiě)
數(shù)據(jù) 210
17.3.4 erase_block:擦除設(shè)備 213
17.4 注冊(cè)MTD NAND設(shè)備 214
17.5 驅(qū)動(dòng)配置 215
17.6 驅(qū)動(dòng)驗(yàn)證 216
17.7 本章小結(jié) 217
第18章 脈沖編碼器設(shè)備驅(qū)動(dòng)
開(kāi)發(fā)218
18.1 脈沖編碼器層級(jí)結(jié)構(gòu) 219
18.2 創(chuàng)建脈沖編碼器設(shè)備 220
18.3 實(shí)現(xiàn)脈沖編碼器設(shè)備的操作
方法 220
18.3.1 init:初始化脈沖
編碼器 221
18.3.2 control:控制脈沖
編碼器 222
18.3.3 get_count:獲取編碼器
計(jì)數(shù) 223
18.3.4 clear_count:清空編碼器
計(jì)數(shù) 224
18.4 注冊(cè)脈沖編碼器設(shè)備 224
18.5 脈沖編碼器中斷處理 225
18.6 驅(qū)動(dòng)配置 226
18.7 驅(qū)動(dòng)驗(yàn)證 227
18.8 本章小結(jié) 229
第19章 加解密設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 230
19.1 加解密設(shè)備層級(jí)結(jié)構(gòu) 230
19.2 創(chuàng)建加解密設(shè)備 231
19.3 實(shí)現(xiàn)加解密設(shè)備的操作方法 231
19.3.1 create:創(chuàng)建設(shè)備 232
19.3.2 destroy:銷(xiāo)毀設(shè)備 236
19.3.3 copy:復(fù)制上下文 237
19.3.4 reset:復(fù)位設(shè)備 239
19.4 注冊(cè)加解密設(shè)備 240
19.5 驅(qū)動(dòng)配置 241
19.6 驅(qū)動(dòng)驗(yàn)證 241
19.7 本章小結(jié) 242
第20章 PM設(shè)備驅(qū)動(dòng)開(kāi)發(fā)243
20.1 PM層級(jí)結(jié)構(gòu) 243
20.2 實(shí)現(xiàn)PM設(shè)備的操作方法 244
20.2.1 sleep:切換休眠模式 244
20.2.2 run:切換運(yùn)行模式 246
20.2.3 timer_start:定時(shí)器
啟動(dòng) 247
20.2.4 timer_get_tick:獲取
時(shí)鐘值 248
20.2.5 timer_stop:定時(shí)器停止 248
20.3 注冊(cè)PM設(shè)備 249
20.4 驅(qū)動(dòng)配置 250
20.5 驅(qū)動(dòng)驗(yàn)證 250
20.6 本章小結(jié) 251
第三篇 高級(jí)篇
第21章 WLAN設(shè)備驅(qū)動(dòng)
開(kāi)發(fā) 254
21.1 WLAN層級(jí)結(jié)構(gòu) 254
21.2 創(chuàng)建WLAN設(shè)備 256
21.3 實(shí)現(xiàn)WLAN設(shè)備的操作方法 256
21.3.1 wlan_init:初始化設(shè)備 257
21.3.2 wlan_scan:掃描 258
21.3.3 wlan_get_rssi:獲取信號(hào)
強(qiáng)度 258
21.3.4 wlan_cfg_promisc:配置
混雜模式 259
21.3.5 wlan_set_channel:設(shè)置
信道 259
21.3.6 wlan_set_country:設(shè)置
國(guó)家碼 260
21.3.7 wlan_send:發(fā)送數(shù)據(jù) 261
21.4 注冊(cè)WLAN設(shè)備 261
21.5 驅(qū)動(dòng)配置 262
21.6 驅(qū)動(dòng)驗(yàn)證 263
21.7 本章小結(jié) 264
第22章 ETH設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 265
22.1 ETH層級(jí)結(jié)構(gòu) 265
22.2 創(chuàng)建ETH設(shè)備 266
22.3 實(shí)現(xiàn)ETH設(shè)備的操作方法 267
22.3.1 eth_rx:數(shù)據(jù)接收 268
22.3.2 eth_tx:數(shù)據(jù)發(fā)送 270
22.4 注冊(cè)ETH設(shè)備 271
22.5 驅(qū)動(dòng)配置 272
22.6 驅(qū)動(dòng)驗(yàn)證 272
22.7 本章小結(jié) 273
第23章 AUDIO MIC設(shè)備驅(qū)動(dòng)
開(kāi)發(fā) 274
23.1 AUDIO層級(jí)結(jié)構(gòu) 274
23.2 創(chuàng)建MIC設(shè)備 275
23.3 實(shí)現(xiàn)MIC設(shè)備的操作方法 276
23.3.1 getcaps:獲取設(shè)備功能 276
23.3.2 configure:配置設(shè)備 279
23.3.3 init:初始化設(shè)備 281
23.3.4 start:?jiǎn)?dòng)設(shè)備 281
23.3.5 stop:停止設(shè)備 282
23.4 音頻數(shù)據(jù)流處理 282
23.5 注冊(cè)MIC設(shè)備 284
23.6 驅(qū)動(dòng)配置 285
23.7 驅(qū)動(dòng)驗(yàn)證 286
23.8 本章小結(jié) 286
第24章 AUDIO SOUND設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 287
24.1 創(chuàng)建SOUND設(shè)備 287
24.2 實(shí)現(xiàn)SOUND設(shè)備的操作
方法 287
24.2.1 getcaps:獲取設(shè)備功能 288
24.2.2 configure:配置設(shè)備 291
24.2.3 init:初始化設(shè)備 293
24.2.4 start:?jiǎn)?dòng)設(shè)備 293
24.2.5 stop:停止設(shè)備 294
24.2.6 buffer_info:獲取緩沖區(qū)
信息 294
24.3 音頻數(shù)據(jù)流處理 295
24.4 注冊(cè)SOUND設(shè)備 297
24.5 驅(qū)動(dòng)配置 298
24.6 驅(qū)動(dòng)驗(yàn)證 299
24.7 本章小結(jié) 300
第25章 USBD設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 301
25.1 USBD層級(jí)結(jié)構(gòu) 301
25.2 創(chuàng)建USBD設(shè)備 302
25.3 實(shí)現(xiàn)USBD設(shè)備的操作方法 303
25.3.1 set_address:設(shè)置USBD
設(shè)備地址 304
25.3.2 set_config:配置USBD
設(shè)備 305
25.3.3 ep_set_stall:設(shè)置端點(diǎn)
STALL狀態(tài) 305
25.3.4 ep_clear_stall:清除端點(diǎn)STALL狀態(tài) 305
25.3.5 ep_enable:使能端點(diǎn) 306
25.3.6 ep_disable:禁用端點(diǎn) 306
25.3.7 ep_read_prepare:端點(diǎn)接收數(shù)據(jù)準(zhǔn)備信號(hào) 307
25.3.8 ep_read:端點(diǎn)接收數(shù)據(jù) 307
25.3.9 ep_write:端點(diǎn)發(fā)送
數(shù)據(jù) 308
25.3.10 ep0_send_status:通知主機(jī)
數(shù)據(jù)傳輸結(jié)束 308
25.3.11 suspend:掛起USBD
設(shè)備 308
25.3.12 wakeup:?jiǎn)拘裊SBD
設(shè)備 309
25.4 注冊(cè)USBD設(shè)備 309
25.5 USBD中斷處理 311
25.5.1 rt_usbd_ep0_setup_handler:端點(diǎn)0 SETUP回調(diào)函數(shù) 312
25.5.2 rt_usbd_ep0_in_handler:IN令牌包回調(diào)函數(shù) 312
25.5.3 rt_usbd_ep0_out_handler:OUT令牌包回調(diào)函數(shù) 313
25.5.4 其他回調(diào)函數(shù) 313
25.6 驅(qū)動(dòng)配置 314
25.7 驅(qū)動(dòng)驗(yàn)證 315
25.8 本章小結(jié) 315
第26章 USBH設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 316
26.1 USBH層級(jí)結(jié)構(gòu) 316
26.2 創(chuàng)建USBH設(shè)備 317
26.3 實(shí)現(xiàn)USBH設(shè)備的操作方法 318
26.3.1 reset_port:重置端口 318
26.3.2 pipe_xfer:傳輸數(shù)據(jù) 319
26.3.3 open_pipe:開(kāi)啟傳輸
管道 322
26.3.4 close_pipe:關(guān)閉傳輸
管道 323
26.4 注冊(cè)USBH設(shè)備 323
26.5 USBH中斷處理 324
26.5.1 rt_usbh_root_hub_connect_handler:連接成功回調(diào)
函數(shù) 324
26.5.2 rt_usbh_root_hub_disconnect_handler:斷開(kāi)連接回調(diào)
函數(shù) 325
26.5.3 其他中斷處理 326
26.6 驅(qū)動(dòng)配置 326
26.7 驅(qū)動(dòng)驗(yàn)證 327
26.8 本章小結(jié) 327
第27章 CAN設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 328
27.1 CAN層級(jí)結(jié)構(gòu) 328
27.2 創(chuàng)建CAN設(shè)備 329
27.3 實(shí)現(xiàn)CAN設(shè)備的操作方法 330
27.3.1 configure:配置CAN
設(shè)備 330
27.3.2 control:控制CAN
設(shè)備 331
27.3.3 sendmsg:發(fā)送一幀
數(shù)據(jù) 334
27.3.4 recvmsg:接收一幀
數(shù)據(jù) 336
27.4 CAN中斷處理 337
27.5 注冊(cè)CAN設(shè)備 339
27.6 驅(qū)動(dòng)配置 340
27.7 驅(qū)動(dòng)驗(yàn)證 341
27.8 本章小結(jié) 344