《嵌入式系統(tǒng)開發(fā)基礎(chǔ):基于ARM9微處理器C語言程序設(shè)計(第四版)/高等學校計算機應(yīng)用規(guī)劃教材》對32位精簡指令系統(tǒng)嵌入式微處理器S3C2410的硬件系統(tǒng)和C語言驅(qū)動程序進行了詳細的講解,書中的源代碼和實例程序?qū)W習或從事嵌入式系統(tǒng)設(shè)計的讀者都有很高的參考價值。在人機界面設(shè)計、系統(tǒng)初始化程序編寫、仿真器設(shè)置和復雜工程項目構(gòu)建等方面給出了簡化做法,使初學者能夠輕松、快速地掌握嵌入式系統(tǒng)設(shè)計方法。本書以實用技術(shù)為主,內(nèi)容通俗易懂,實例豐富,特別適合初學者和從事嵌入式系統(tǒng)設(shè)計工作的讀者使用。本書配套的電子課件、配套實驗講義、各章的習題答案和部分工具軟件可以到http://www.tupwk.com.cn網(wǎng)站下載。
嵌入式控制系統(tǒng)的教學現(xiàn)狀
嵌入式控制系統(tǒng)的教學一般分為兩個層次。
第一個層次,完成以MCS-51為代表的8位單片機教學。這在各個高校都得到了重視,大多數(shù)學校安排理論課64學時,實驗課32學時,課時比較充足。在這個層次上,無論是講授C語言程序設(shè)計,還是講授匯編語言程序設(shè)計,可供選擇的教材都比較多。
第二個層次,也就是以32位ARM為代表的嵌入式控制系統(tǒng)教學。目前,許多學校都沒有開設(shè),主要有以下3個原因。
一是缺乏師資。畢竟,以ARM為代表的嵌入式控制系統(tǒng)設(shè)計是20世紀90年代才發(fā)展起來的新技術(shù),它不僅包括高性能、功能豐富的硬件平臺,而且軟件開發(fā)的難度和嵌入式操作系統(tǒng)的應(yīng)用,都對教師提出了更高的要求。
二是在課時安排上也有一定困難。這么復雜的軟硬件系統(tǒng),包括嵌入式操作系統(tǒng),即使是用96(包括實驗)學時,也不一定能講深講透。況且,整個教學計劃中也沒有很多的時間。
三是沒有合適的教材。特別是深入淺出、條理分明、適應(yīng)本科生水平、課時比較合理的教材非常少。
為了克服上述困難,也為了滿足教學需要,作者根據(jù)多年科研和教學經(jīng)驗編寫了本書。
作者的想法是:在32位ARM為代表的嵌入式控制系統(tǒng)教學中,不講述帶嵌入式操作系統(tǒng)的部分,而選擇一種有代表性的32位單片機(類似8位機中的MCS-51)。這里選擇韓國三星S3C2410 ARM9單片機。在ADS1.2 For Windows集成開發(fā)環(huán)境中,用C語言完成嵌入式控制系統(tǒng)的開發(fā)工作。理論課內(nèi)容安排48學時,實驗課時間和內(nèi)容由教師根據(jù)各校的時間和條件自行決定。
在48學時(16周,每周3學時)內(nèi),集中將S3C2410的最基本硬件結(jié)構(gòu)、軟件資源學深學透,學會用C語言編寫應(yīng)用程序。在用C語言編寫驅(qū)動程序時,盡量借助系統(tǒng)資源,參考例子程序,減少設(shè)計者的工作量。通過較短時間的學習,學生可以很快掌握嵌入式控制系統(tǒng)設(shè)計的方法,完成嵌入式控制系統(tǒng)的設(shè)計工作。
本書篇幅雖然不長,但程序源代碼較多,對于從事嵌入式系統(tǒng)開發(fā)和學習來說是非常寶貴的資源。但是,如果在課堂上講解和分析這些代碼,學時顯然不夠。建議教師主要講解S3C2410的硬件資源和編程方法,具體程序代碼留給學生課后慢慢消化理解。
教學實驗平臺介紹
有條件的學校,在完成理論課教學的同時,應(yīng)安排一定的實驗課,教學效果會更好。
作者接觸的ARM9(SAMSUNG 2410)教學實驗系統(tǒng)有深圳英蓓特信息技術(shù)有限公司(http://www.embedinfo.com)的Embest EDUKIT-Ⅱ/Ⅲ、北京博創(chuàng)科技集團(http://www.up- tech.com)的UP-NETARM 2410教學實驗系統(tǒng)、北京精儀達盛科技公司(http://www. techshine.com)的EL-ARM-830教學實驗系統(tǒng)。上述教學實驗系統(tǒng)都有基于ARM9系統(tǒng)資源的C語言實驗程序例子,使用方便,可供選擇。隨書下載的實驗講義有兩冊:一是基于深圳英蓓特信息技術(shù)有限公司(http://www.embedinfo.com)的Embest EDUKIT-Ⅱ/Ⅲ,實驗時應(yīng)配合Embest EDUKIT-Ⅱ/Ⅲ教學實驗系統(tǒng)平臺,并安裝Embest IDE;二是基于北京精儀達盛科技公司(http://www.techshine.com)的EL-ARM-830教學實驗系統(tǒng),實驗時應(yīng)配合EL-ARM-830教學實驗系統(tǒng)平臺。兩套實驗系統(tǒng)程序的執(zhí)行都要去掉目錄中的中文目錄,并盡量縮短目錄深度。
本書主要內(nèi)容和學習本書所需基礎(chǔ)知識
第1章:簡單講述嵌入式控制系統(tǒng)的定義、研究現(xiàn)狀和研究方法。
第2章:較詳細地講述基于ARM芯片的集成開發(fā)環(huán)境ADS 1.2的創(chuàng)建和使用。
第3章:講述ARM9芯片S3C2410的片上資源和編程參考項目2410test.mcp。
第4章:講述S3C2410的I/O口和I/O口操作。
第5章:講述S3C2410的中斷系統(tǒng)及編程。
第6章:講述S3C2410的串口UART。
第7章:講述S3C2410的A/D和D/A轉(zhuǎn)換控制。
第8章:講述ADC和觸摸屏控制。
第9章:講述S3C2410的實時時鐘(RTC)和編程。
第10章:講述直接存儲器存取(DMA)的工作原理及S3C2410的DMA控制器。
第11章:講述脈寬調(diào)制(PWM)的工作原理及S3C2410的PWM控制器。
第12章:講述看門狗(Watchdog)電路的工作原理及S3C2410的Watchdog控制。
第13章:講述雙向二線制同步串行總線 I C及S3C2410的I C控制電路。
第14章:講述數(shù)字音頻信號(I S)和S3C2410的I S控制。
第15章:對串行外設(shè)接口(SPI)進行了介紹。
第16章:講述S3C2410的人機界面設(shè)計。
第17章:講述程序的調(diào)試、燒寫和運行。
第18章:項目開發(fā)實訓。
以上各章內(nèi)容除第1~5章外,其他各章內(nèi)容基本獨立。教師如果覺得在48學時內(nèi)完成教學比較困難,除第2、3、4、5章和第16、17章作為重點建議必講之外,其他各章可根據(jù)情況有選擇地刪節(jié)。
隨書提供軟件包一個,其中有本書的電子課件、S3C2410使用手冊、實驗講義、各章習題答案、ADS1.2、參考項目2410test.mcp、通用字模提取程序和部分例子程序,可以在清華大學出版社網(wǎng)站(http://www.tupwk.com.cn)上免費下載。
第四版課件由孫穎馨老師在第三版基礎(chǔ)上重新進行了制作,作者對她的工作表示感謝。
本書的特點是通過深入淺出的講述,將基于ARM9的嵌入式控制系統(tǒng)設(shè)計方法教給學生,使學生能夠在最短的時間內(nèi)入門。
學習本書至少要有C語言基礎(chǔ),如果有MCS-51單片機基礎(chǔ),學習本書就會更加輕松。
第四版與第三版區(qū)別
為了滿足教學急需,第三版出書時間較緊,書中難免有錯誤或不足之處,在第四版中作者對書中內(nèi)容進行了仔細斟酌研究,更正了已發(fā)現(xiàn)的錯誤,并根據(jù)多年教學經(jīng)驗和指導學生參加全國和省級“嵌入式”和“電子設(shè)計”大賽體會,刪除了一些不適用的章節(jié),增加了一部分新內(nèi)容。
書中實驗程序的注釋是本書的重要內(nèi)容,仔細閱讀這些注釋對于理解書中內(nèi)容和練習編程非常重要。
為了使讀者正確理解原程序,凡是原參考文獻給出的注釋,書中仍然保留英文,凡是作者給出的注釋,用中文給出。
為了提高學生實踐動手能力,第四版增加了一章實訓內(nèi)容(第18章項目開發(fā)實訓)。
根據(jù)讀者意見,為了使版面工整,方便閱讀,注釋采用分散方式對齊。
雖然做了很大努力,并請孫俊喜、才華兩位教授對書中內(nèi)容進行審核校對,但百密一疏,難免有考慮不周或錯誤之處,真誠歡迎讀者多提寶貴意見和建議。我們的信箱是huchenhao@263.net,電話是010-62796045。
本書通用字模提取程序密碼:194512125019。
侯殿有
2015年6月
第1章 嵌入式控制系統(tǒng)簡介1
1.1 單片機和嵌入式控制系統(tǒng)的
定義和分類1
1.1.1 單片機和嵌入式控制系統(tǒng)
的定義1
1.1.2 嵌入式控制系統(tǒng)的設(shè)計方法2
1.1.3 嵌入式控制系統(tǒng)各種設(shè)計方法
的特點2
1.2 ARM處理器簡介4
1.2.1 ARM體系結(jié)構(gòu)的發(fā)展4
1.2.2 ARM體系結(jié)構(gòu)的存儲器格式8
1.3 習題9
第2章 ADS1.2開發(fā)環(huán)境
創(chuàng)建與簡介10
2.1 ADS1.2開發(fā)環(huán)境創(chuàng)建10
2.1.1 ADS1.2概述10
2.1.2 ADS1.2的安裝12
2.2 ADS集成開發(fā)環(huán)境的使用14
2.2.1 建立一個新工程14
2.2.2 開發(fā)環(huán)境設(shè)置14
2.2.3 其他開發(fā)環(huán)境介紹18
2.3 用AXD進行代碼仿真、
調(diào)試19
2.3.1 AXD簡介19
2.3.2 JTAG概述21
2.3.3 Nor和Nand Flash的區(qū)別和
使用22
2.3.4 燒寫Flash24
2.4 ARM C語言程序的基本規(guī)則和
系統(tǒng)初始化程序24
2.4.1 ARM使用C語言編程
基本規(guī)則24
2.4.2 初始化程序和開發(fā)環(huán)境設(shè)置25
2.5 習題27
第3章 ARM9微處理器S3C2410
資源28
3.1 S3C2410處理器介紹28
3.1.1 AMBA、AHB、APB總線
特點28
3.1.2 S3C2410處理器體系結(jié)構(gòu)30
3.1.3 S3C2410處理器管理系統(tǒng)30
3.1.4 S3C2410處理器存儲器
映射30
3.1.5 S3C2410處理器時鐘和
電源管理31
3.2 S3C2410處理器片上資源的
定義和使用33
3.3 參考軟件資源2410test.mcp34
3.4 幾個常用的輸入/輸出函數(shù)39
3.5 def.h頭文件45
3.6 習題46
第4章 S3C2410的I/O口和 I/O口
操作47
4.1 S3C2410 I/O口描述47
4.2 I/O端口控制寄存器48
4.2.1 端口A控制寄存器和
功能配置48
4.2.2 端口B控制寄存器和
功能配置49
4.2.3 端口C控制寄存器和
功能配置50
4.2.4 端口D控制寄存器和
功能配置52
4.2.5 端口E控制寄存器和
功能配置53
4.2.6 端口F控制寄存器和
功能配置54
4.2.7 端口G控制寄存器和
功能配置55
4.2.8 端口H控制寄存器和
功能配置56
4.3 I/O口控制C語言編程實例57
4.3.1 硬件電路57
4.3.2 參考程序58
4.4 習題60
第5章 S3C2410的中斷系統(tǒng)61
5.1 S3C2410的中斷源61
5.2 S3C2410的中斷處理62
5.3 中斷控制63
5.3.1 中斷模式(INTMOD)
寄存器63
5.3.2 中斷掛起寄存器和中斷源
掛起寄存器64
5.3.3 中斷屏蔽寄存器(INTMSK)66
5.3.4 中斷優(yōu)先級寄存器
(PRIORITY)66
5.4 子中斷源的中斷控制69
5.5 中斷向量設(shè)置70
5.6 其他常用寄存器70
5.7 中斷程序編寫中需注意的
問題72
5.8 中斷實驗和中斷程序編寫74
5.9 習題78
第6章 S3C2410的串口UART79
6.1 S3C2410的串口UART概述79
6.1.1 S3C2410串行通信(UART)
單元79
6.1.2 波特率的產(chǎn)生79
6.1.3 UART通信操作80
6.2 UART的控制寄存器80
6.2.1 UART線路控制寄存器
ULCONn(n=0~2)80
6.2.2 UART控制寄存器
UCONn(n=0~2)81
6.2.3 UART FIFO控制寄存器
UFCONn(n=0~2)81
6.2.4 UART調(diào)制解調(diào)器控制寄存器
UMCONn(n=0或1)81
6.2.5 發(fā)送寄存器UTXHn(n=0~2)和接收寄存器URXHn(n=0~2)82
6.2.6 UART TX/RX狀態(tài)寄存器
UTRSTATn(n=0~2)82
6.2.7 S3C2410 UART使用的
端口82
6.3 UART通信程序例子82
6.3.1 RS232接口電路83
6.3.2 UART實驗程序83
6.4 習題89
第7章 S3C2410的A/D、D/A
轉(zhuǎn)換控制90
7.1 S3C2410的A/D、D/A
轉(zhuǎn)換控制90
7.1.1 A/D轉(zhuǎn)換控制寄存器
(ADCCON)90
7.1.2 A/D轉(zhuǎn)換控制程序的
編制步驟91
7.2 參考程序91
7.3 習題94
第8章 觸摸屏控制95
8.1 觸摸屏結(jié)構(gòu)和工作原理95
8.1.1 觸摸屏工作原理95
8.1.2 S3C2410的觸摸屏控制97
8.2 觸摸屏控制程序100
8.3 習題102
第9章 S3C2410的實時
時鐘(RTC)103
9.1 實時時鐘在嵌入式系統(tǒng)中的
作用103
9.1.1 S3C2410的實時時鐘單元103
9.1.2 S3C2410的實時時鐘
寄存器104
9.2 參考程序及說明106
9.3 習題112
第10章 直接存儲器存取(DMA)
控制113
10.1 DMA基礎(chǔ)知識113
10.2 S3C2410的DMA控制器115
10.3 DMA方式實現(xiàn)存儲器到
存儲器的數(shù)據(jù)傳送117
10.3.1 頭文件定義和函數(shù)聲明118
10.3.2 DMA方式實現(xiàn)存儲器到
存儲器的數(shù)據(jù)傳送118
10.4 習題123
第11章 S3C2410的PWM控制124
11.1 PWM定時器概述124
11.1.1 什么是脈寬調(diào)制124
11.1.2 S3C2410的脈寬調(diào)制
PWM控制124
11.1.3 S3C2410定時器特性126
11.1.4 定時器操作示例127
11.1.5 死區(qū)生成器127
11.2 PWM輸出電平控制128
11.2.1 PWM工作原理128
11.2.2 PWM輸出控制129
11.3 PWM定時器控制寄存器129
11.3.1 定時器配置寄存器0129
11.3.2 定時器配置寄存器1130
11.3.3 減法緩沖寄存器和比較緩
沖寄存器130
11.3.4 定時器控制寄存器131
11.3.5 減法計數(shù)器觀察寄存器131
11.4 PWM參考程序132
11.5 習題138
第12章 S3C2410的看門狗
電路控制140
12.1 看門狗電路的功能及
工作原理140
12.1.1 S3C2410的看門狗控制140
12.1.2 看門狗定時器控制
寄存器141
12.2 參考程序及說明142
12.3 習題143
第13章 S3C2410的I2C
總線控制144
13.1 I2C總線工作原理144
13.2 EEPROM讀/寫操作147
13.2.1 AT24C04結(jié)構(gòu)與
應(yīng)用簡述147
13.2.2 設(shè)備地址(DADDR)148
13.2.3 AT24CXX的數(shù)據(jù)
操作格式148
13.3 S3C2410處理器I2C接口148
13.3.1 S3C2410 I2C接口簡介149
13.3.2 使用S3C2410 I2C總線讀/
寫方法150
13.4 S3C2410 I2C總線讀/寫參考
程序編寫150
13.5 I2C實驗程序151
13.6 習題155
第14章 I2S介紹和S3C2410的I2S
控制156
14.1 數(shù)字音頻信號(I2S)介紹156
14.2 數(shù)字音頻計算機處理157
14.2.1 采樣頻率和采樣精度157
14.2.2 音頻編碼158
14.2.3 I2S數(shù)字音頻接口158
14.3 音頻芯片UDA1341TS
介紹158
14.3.1 硬件結(jié)構(gòu)158
14.3.2 S3C2410和UDA1341TS的
連接160
14.3.3 UDA1341TS的
軟件編程161
14.3.4 UDA1341TS DATA0
編程162
14.3.5 UDA1341TS DATA1
編程165
14.3.6 UDA1341TS 控制寄存器
STATUS編程165
14.4 S3C2410中I2S總線控制
寄存器167
14.5 WAV聲音格式文件168
14.6 I2S實驗參考程序169
14.7 習題177
第15章 串行外設(shè)接口(SPI)介紹178
15.1 SPI接口及操作178
15.1.1 SPI接口原理178
15.1.2 SPI接口特性180
15.2 SPI接口控制寄存器180
15.2.1 SPI控制寄存器
(SPICONn)180
15.2.2 SPI狀態(tài)寄存器
(SPSTAn)180
15.2.3 SPI引腳控制寄存器
(SPPINn)181
15.2.4 SPI波特率預(yù)分頻寄存器
(SPPREn)181
15.2.5 SPI發(fā)送數(shù)據(jù)寄存器
(SPTDATn)182
15.2.6 SPI接收數(shù)據(jù)寄存器
(SPRDATn)182
15.2.7 SPI接口操作182
15.2.8 SPI接口編程182
15.2.9 SPI口的傳輸格式183
15.2.10 SPI通信模式184
15.3 參考程序184
15.4 習題188
第16章 S3C2410的人機
界面設(shè)計189
16.1 英文字符存儲與顯示原理189
16.1.1 ASCII碼189
16.1.2 英文字符的顯示190
16.2 漢字在計算機中的
表示和顯示191
16.2.1 漢字的內(nèi)碼和區(qū)位碼191
16.2.2 漢字的顯示192
16.2.3 其他西文字符在計算機中的
存儲和顯示193
16.2.4 屏幕上“打點”194
16.2.5 字模提取與建立小字庫
概述194
16.3 字模提取與建立小字庫195
16.3.1 用C語言提取字模和建立
小字庫195
16.3.2 用Delphi提取字模和建立
小字庫199
16.3.3 通用字模提取程序MinFonBase
使用說明209
16.4 S3C2410顯示控制特點210
16.4.1 STN LCD顯示器210
16.4.2 TFT LCD顯示器211
16.4.3 LCD控制器特點211
16.5 S3C2410的LCD控制信號和
外部引腳211
16.5.1 LCD專用控制寄存器213
16.5.2 LCD專用控制寄存器的
設(shè)置218
16.5.3 LCD屏幕“打點”程序221
16.6 S3C2410的LCD
驅(qū)動程序224
16.6.1 S3C2410的LCD驅(qū)動程序
編寫步驟225
16.6.2 利用S3C2410顯示漢字與
曲線226
16.7 S3C2410在LCD驅(qū)動方面的
其他應(yīng)用234
16.7.1 HD66421的硬件簡介235
16.7.2 HD66421的軟件編程236
16.7.3 HD66421與微處理器接口及
驅(qū)動程序240
16.8 在LCD屏上按一定格式顯示
漢字和曲線252
16.9 S3C6410 (ARM11)的漢字和
曲線顯示253
16.9.1 S3C6410 (ARM11)簡介253
16.9.2 S3C6410(ARM11)的漢字和
曲線顯示254
16.10 習題262
第17章 程序的調(diào)試、運行和
燒寫263
17.1 VIVI軟件的運行和使用263
17.1.1 VIVI軟件的運行263
17.1.2 VIVI的幾個常用命令263
17.2 VIVI軟件的安裝265
17.3 程序的調(diào)試運行267
17.4 程序的燒寫275
17.5 習題278
第18章 項目開發(fā)實例279
18.1 實例目的和軟硬件準備279
18.1.1 實例目的279
18.1.2 軟硬件準備279
18.2 字模提取、建小字庫279
18.2.1 漢字字模提取、建小漢
字庫279
18.2.2 西文和數(shù)學符號字模
提取280
18.2.3 ASCII碼字模處理、其他
圖形處理282
18.3 項目構(gòu)建282
18.3.1 項目結(jié)構(gòu)282
18.3.2 main.c程序簡單介紹283
18.4 項目調(diào)試284
18.4.1 開發(fā)環(huán)境設(shè)置285
18.4.2 項目編譯289
18.4.3 項目調(diào)試290
18.5 項目燒寫(固化)293
參考文獻296