了解S3C2410/S3C2440和触摸屏的结构;
了解电阻触摸屏的工作原理和等效电路图;
了解S3C2410/S3C2440触摸屏控制器的多种工作模式;
掌握S3C2410/S3C2440 ADC和触摸屏的编程方法;
14.1 ADC和触摸屏硬件介绍及使用
14.1.1 S3C2410/S3C2440
S3C2410/S3C2440 的ADC可以接收8个通道的模拟信号输入,并将它们转换
为10位的二进制数据。在2.5MHz的A/D转换时钟下,最大的转化速率可达500K
SPS(SPS:samples per second,每秒的采样次数)。
S3C2410/S3C2440 都提供触摸屏的接口,不过它们有所不同。S3C2410的
触摸屏接口向外提供4个控制信号引脚(nYPON、YMON、nXPON、XMON)和2
个模拟信号输入引脚(AIN[7]、AIN[5]),这6个引脚通过4个晶体管与触摸屏的4个
引脚相连。而S3C2440提供了与触摸屏直接连接的4个引脚,不需要外接晶体管。
S3C2410/S3C2440 ADC和触摸屏接口有如下特性:
·分辨率:10位;
·微分线性度误差:±1.0LSB;
·积分线性度误差:±2.0LSB;
·最大转换速率 :500KSPS;
·低功耗;
·供电电压 :3.3V;
·输入模拟电压范围:0~3.3V;
·片上采样保持功能;
·普通转换模式;
·分离的x/y轴坐标转换模式;
·自动(连续)x/y轴坐标转换模式;
·等待中断模式。
ADC和触摸屏接口结构如图14.1、14.2所示。
从图14.1、14.2可知,ADC和触摸屏接口只有一个ADC转换器,可以通过设置寄存器来选择对
哪路模拟信号(多大8路)进行采样。图中有两个中断信号:INT_ADC、INT_TC,前者表示A/D转换
器已经转换完毕,后者表示触摸屏被按下了。
对于S3C2410,在使用触摸屏时,AIN[7]和AIN[5]被用来测量XP、YP的电平,只剩下AIN[6]、
AIN[4:0]共6个引脚用于一般的ADC输入。
对于S3C2440,在使用触摸屏时,引脚XP、XM、YP、YM被用于和触摸屏直接相连,只剩下
AIN[3:0]共4个引脚用于一般的ADC输入。
当不使用触摸屏时,XP、XM、YP、YM这4个引脚也可以用于一般的ADC输入。
S3C2410与触摸屏的连接比S3C2440复杂,需要增加几个外接晶体管,如图14.3所示。
14.1.2 S3C2410/S3C2440 ADC接口的使用方法
ADC的启动方式有两种:手工启动、读结果时就自动地启动下一次转换。也有两种方法获
知当前转换是否结束:查询状态位、转换结束时发出中断。
ADC的操作只涉及到3个寄存器:ADCCON、ADCTSC、ADCDAT0。下面介绍它们的用
法,有关触摸屏的数据位将在14.1.3小节介绍。
这两个寄存器的格式如表14.1、14.2所示。
(1)设置ADCCON寄存器,选择输入信号通道,设置A/D转换器的时钟。
使能A/D转换器时钟的预分频功能时,A/D时钟的计算公式如下:
A/D时钟 = PCLK / (PRSCVL + 1);
注意:A/D时钟最大为2.5MHz,并且应该小于PCLK的1/5.
(2)设置ADCTSC寄存器,使用设为普通转换模式,不使用触摸屏功能。
ADCTSC寄存器多用于触摸屏,对于普通ADC,使用它的默认值即可,或设置其位[2]
为0。ADCTSC寄存器的格式在14.13小节介绍。
(3)设置ADCCON寄存器,启动A/D转换。
如果设置READ_START位,则读转换数据(读ADCDAT0寄存器)时即启动下一次
转换;否则,可以通过设置ENABLE_START位来启动AD转换。
(4)转换结束时,读取ADCDAT0寄存器获得数值。
如果使用查询方式,则可以不断读取ADCCON寄存器的ECFLG位来确定转换是否结束;
否则可以使用INT_ADC中断,发生INT_ADC中断时表示转换结束。
14.1.3 触摸屏原理及接口
1. 电阻触摸屏原理
触摸屏的种类有很多,比如超声波触摸屏、红外触摸屏、电容触摸屏、电阻触摸屏等。
电阻触摸屏由于造价低廉,在电气上可以直接接入用户的系统中而得到大量使用。电阻
触摸屏有几种类型,比如“四线”、“五线”和“八线”。线越多,精度就越高,温度漂移也越
少,但基本的操作是一样的。它本质上是个电阻分压器,将矩形区域中触摸点(x、y)的物
理位置转换为代表x坐标和y坐标的电压。
S3C2410/S3C2440 的触摸屏接口可以驱动四线电阻触摸屏,四线电阻触摸屏的等效
电路如图14.4所示。图中粗线表示相互绝缘的两层导电层,当按压时,它们在触电处相连;
不同的触点在x、y方向上的分压值不同,将这两个分压值经过A/D转换后即可得到x、y坐标。
下面根据其等效电路说明触摸屏的工作过程。
(1)平时触摸屏没有被按下时,等效电路如图14.5所示。
S4、S5闭合,S1、S2、S3断开,即YM接地、XP上拉、XP和YP作为模拟输入(对CPU而
言)、XM高阻。
平时触摸屏没有按下时,由于上拉电阻的关系,Y_ADC为高电平:当x轴和y轴受挤压而接触
导通后,Y_ADC的电压由于连通道y轴接地而变为低电平,此低电平可作为中断触发信号来通知
CPU发生“Pen Down”事件,在S3C2410/S3C2440中,称为等待中断模式。
(2)采样X_ADC电压,得到x坐标,等效电路如图14.6所示。
S1、S3闭合,S2、S4、S5断开,即XP接上电源、XM接地、YP作为模拟输入(对CPU
而言)、YM高阻、XP禁止上拉。这时,YP即X_ADC就是x轴的分压点,进行AD转换后
就得到x坐标。
(3)采样Y_ADC电压,得到y坐标,等效电路如图14.7所示。
S2、S4闭合,S1、S3、S5断开,即YP接电源、YM接地、XP作为模拟输入(对CPU
而言)、XM高阻、XP禁止上拉。这时,XP即Y_ADC就是y轴的分压点,进行AD转换后
就得到y坐标。
2.S3C2410/S3C2440触摸屏接口
与上面描述的触摸屏工作过程的3个步骤对应,触摸屏控制器也有4种工作模式。
(1)等待中断模式(Waiting for Interrupt Mode)
设置ADCTSC寄存器位0xD3即可令触摸屏控制器处于这种模式。这时,它在等待触摸
屏被按下。当触摸屏被按下时,触摸屏控制器将发出INT_TC中断信号,此时触摸屏控制
器要转入以下两种工作模式中的一种,以读取x、y坐标。
对于S3C2410,当触摸屏被按下或松开时,都产生INT_TC中断信号。
对于S3C2440,可以设置ADCTSC寄存器的位[8]为0或1,表示等待按下中断或松开中断。
(2)分离的x/y轴坐标转换模式(Separate X/Y Position Conversion Mode)
这分别对应上述触摸屏工作过程的第2、3步骤。设置ADCTSC寄存器为0x69进入x轴
坐标转换模式,x坐标值转换完毕后被写入ADCDAT0,然后发出INT_ADC中断;相似地,
设置ADCTSC寄存器位0x9a进入y轴坐标转换模式,y坐标值转换完毕后被写入ADCDAT1,
然后发出INT_ADC中断。
(3)自动(连续)x/y轴坐标转换模式
上述触摸屏的工作过程2、3可以合并成一个步骤,设置ADCTSC寄存器为0x0C,进入
自动x/y轴坐标转换模式,触摸屏控制器就会自动转换触摸点的x、y坐标值,并分别写入
ADCDAT0、ADCDAT1寄存器中,然后发出INT_ADC中断。
(4)普通转换模式
不使用触摸屏时,触摸屏控制器处于这种模式。在这种模式下,可以通过设置ADCCON
寄存器启动普通的A/D转换,转换完成时数据被写入ADCDAT0寄存器中。
14.1.2小节讲述ADC接口就是工作于这种模式。
ADCTSC寄存器被用来选择触摸屏的工作模式,它的格式如表14.3所示。
注意:① 处于等待中断模式时,XP_SEN必须设为1(XP接模拟输入)、PULL_UP必须设为0(使能上拉)。
② AUTO_PST设为1时,必须处于自动x/y轴坐标转换模式下。
对于S3C2410,当触摸屏控制器处于等待中断模式时,触摸屏被按下时可以不断发出INT_TC
中断信号以便进入自动x/y轴坐标转换模式转换x、y坐标。发出中断信号的间隔可以通过ADCDLY
寄存器来设置。
对于S3C2440,当CPU处于休眠模式时,触摸屏被按下时可以不断发出INT_TC中断信号以唤
醒CPU。发出中断信号的间隔可以通过ADCDLY寄存器来设置。
另外,对于普通转换模式、分离的x/y轴坐标转换模式、自动x/y轴坐标转换模式,都可以通过
ADCDLY寄存器来设置采样的延时时间。
ADCDLY寄存器格式如表14.4所示,在等待中断模式时,延时时钟为X-tal(3.68MHz),其他情况
为PCLK,可以如图14.8所示。
ADCDAT1寄存器的格式如表14.5所示。它与ADCDAT0寄存器格式相似,ADCDAT1
寄存器中保存y坐标值;而ADCDAT0中保存x坐标值或普通AD转换值。
14.2 ADC和触摸屏操作实例
14.2.1 硬件设计
本开发板中,模拟输入引脚AIN0、AIN1外接可调电阻器,电路图如图14.9所示。
图中两个电阻可调,程序将通过AIN0、AIN1这两个通道采集、转换电压值。
触摸屏的接口是标准的,它的电路图如图14.4所示。
14.2.2 程序设计
本实例程序将提供一个菜单,可以从中选择测试ADC或触摸屏。当测试ADC是,程序
不断测量AIN0、1的电压,并在串口上显示出来。当测试触摸屏时,只是测试触笔按下、
松开的事件,并且把按下时的采集到的x,y坐标打印出来,它们只是原始的数据。
本实例的源码在/work/hardware/adc_ts目录下,主要文件为adc_ts.c。main.c文件
通过串口输出两个菜单共用户选择是测试ADC还是触摸屏,它们分别对应adc_ts.c中的
Test_ADC、Test_Ts函数。
14.2.3 测试ADC的代码详解
1.ADC主入口函数Test_Adc
ADC测试函数Test_Adc代码如下:
行号
94行 /*
95行 *测试ADC
96行 *通过AD转换,测量可变电阻的电压值
97行 */
98行 void Test_Adc(void)
99行 {
100行 float vo10, vo11;
101行 int t0, t1;
102行
103行 printf("Measuring the voltage of AIN0 and AIN1, press any key to exit\n\r");
104行 while(!awaitkey()) //串口无输入,则不断测试
105行 {
106行 vo10 = ((float)ReadAdc()*3.3)/1024.0; //计算电压值
107行 vo11 = ((fooat)ReadAdc()*3.3)/1024.0; //计算电压值
108行 t0 = (vo10 - (int)vo10)*; //计算小数部分,程序中的printf无法打印浮点数
109行 t1 = (vo11 - (int)voll)*; //计算小数部分,程序中的printf无法打印浮点数
110行 printf("AIN0 = %d.%-3dV AIN1 = %d.%-3dV\r", (int)vo10, t0, (int)vo11, t1);
111行 }
112行 printf("\n");
113行 }
114行
Test_Adc()
第106、107行先调用ReadAdc函数发起AD转换,返回10位转换数值(最大为1023);
然后计算实际的电压值。
2.ReadAdc函数:设置、启动ADC,获取转换结果
ADC操作核心函数ReadAdc,代码如下:
68行 /*
69行 *使用查询方式读取AD转换值
70行 *输入参数:
71行 * ch:模拟信号通道,取值为0~7
72行 */
73行 static int ReadAdc(int ch)
74行 {
75行 //选择模拟通道,使能预分频功能,设置AD转换器时钟 = PCLK/(49+1)
76行 ADCCON = PRESCALE_EN | PRSCVL() | ADC_INPUT(ch);
77行
78行 //清除位[2],设为普通转换模式
79行 ADCTSC &= ~( << );
80行
81行 //设置位[0]为1,启动AD转换
82行 ADCCON |= ADC_START;
83行
84行 //当AD转换真正开始时,位[0]会自动清0
85行 while(ADCCON & ADC_START);
86行
87行 //检测位[15],当它为1时表示转换结束
88行 while(!(ADCCON & ADC_ENDCVT));
89行
90行 //读取数据
91行 return (ADCDAT0 & 0x3ff);
92行 }
ReadAdc()
程序与前面介绍的ADC的4个步骤一一对应。
(1)第76行选择模拟通道,使能预分频功能,设置AD转换器的时钟。
本程序中,PCLK为50MHz,所以AD转换器的时钟为50MHz/(49+1) = 1MHz,小于
最大AD时钟2.5MHz。
(2)第79行参考ADCTSC寄存器格式表14.3。
(3)ADC的启动方式有两种,如果使用“读启动”(此时ADCCON寄存器位[1]被设为
1),则读一下ADCDAT0寄存器即可启动;如果使用手动方式,设置ADCCON寄存器位[0]即可
启动。
(4)第88行循环检测方式,也可以使用中断方式,当AD转换结束时,ADC会发出
INT_ADC中断信号。
(5)最后,第91行读取ADCDAT0即可得到转换的数据(低10位有效数据)。
14.2.4 测试触摸屏代码详解
触摸屏的操作稍微复杂,下面将流程图和控制状态转换图合并一起(14.10),以便
后面的代码分析。
1.触摸屏的主入口函数Test_Ts
Test_Ts函数进行初始化、开启ADC中断之后,就不再参与触摸屏的操作,这都通过中
断服务程序来完成。代码如下:
187行/*
188行 *测试触摸屏,打印触点坐标
189行 */
190行 void Test_Ts(void)
191行 {
192行 isr_handle_array[ISR_ADC_OFT] = AdcTsIntHandle; //设置ADC中断服务程序
193行 INTMSK &= ~BIT_ADC; //开启ADC总中断
194行 INTSUBMSK &= ~(BIT_SUB_TC); //开启INT_TC中断,即触摸屏按下或松开时产生中断
195行 INTSUBMSK &= ~(BIT_SUB_ADC); //开启INT_ADC中断,即AD转换结束时产生中断
196行
197行 //使能预分频功能,设置AD转换器的时钟 = PCLK/(49+1)
198行 ADCCON = PRESCALE_EN | PRSCVL();
199行
200行 /*采样延时时间 = (1/3.6864M) * 50000 = 13.65ms
201行 *即按下触摸屏后,13.5ms后才采样
202行 */
203行 ADCDLY = ;
204行
205行 wait_down_int(); /*进入“等待中断模式”,等待触摸屏被按下*/
206行
207行 printf("Touch the screen to test, press any key to exit\n\r");
208行 getc();
209行
210行 //屏蔽ADC中断
211行 INTSUBMSK |= BIT_SUB_TC;
212行 INTSUBMSK |= BIT_SUB_ADC;
213行 INTMSK |= BIT_ADC;
214行 }
Test_Ts()
第192行设置ADC中断处理函数。
本程序中,PCLK为50MHz,所以AD转换器的时钟为50MHz/(49+1) = 1MHz,小于最大AD转换时钟2.5MHz。
第205行调用宏wait_down_int(),令触摸屏控制器进入“等待中断模式”,等待触摸屏被按下。
wait_down_int()、wait_up_int()、mode_auto_xy()都是宏定义,用于设置触摸屏进入
“等待Pen Down中断模式”、“等待Pen Up中断模式”、“自动x/y轴坐标转换模式”。读者可
以参考14.1.3节的“S3C2410/S3C2440触摸屏接口”理解这些代码。
需要注意以下几点:
(1)对于S3C2410,ADCTSC的位[8]属于保留位,只能设为0;
当处于“等待中断模式”时,无论“Pend Down”中断还是“Pen Up”中断都可以检测到。
(2)对于S3C2440,ADCTSC的位[8]为0、1时分别表示等待Pen Down中断或Pen Up
中断。
(3)要进入“自动x/y轴坐标转换模式”,XP、XM、YP、YM的状态不必理会,触摸屏在
采样时会自动控制它们。
这些宏的定义如下:
/*设置进入等待中断模式,XP_PU、XP_Dis、XM_Dis、YP_Dis、YM_En
*(1)对于S3C2410,位[8]只能为0,所以只能使用下面的wait_down_int;
* 它既等待Pen Down中断,也等待Pen Up中断。
*(2)对于S3C2440,位[8]为0、1时分别表示等待Pen Down中断或Pen Up中断
*/
/*进入“等待中断模式”,等待触摸屏被按下*/
#define wait_down_int() { ADCTSC = DOWN_INT | XP_PULL_UP_EN | \
XP_AIN | XM_HIZ | YP_AIN | YM_GND | \
XP_PST(WAIT_INT_MODE); }
/*进入“等待中断模式”,等待触摸屏被松开*/
#define wait_up_int() { ADCTSC = UP_INT | XP_PULL_UP_EN | \
XP_AIN | XM_HIZ | YP_AIN | YM_GND | \
XP_PST(WAIT_INT_MODE); }
/*进入自动x/y轴坐标转换模式*/
#define mode_auto_xy() { ADCTSC = CONVERT_AUTO | XP_PULL_UP_DIS | \
XP_PST(NOP_MODE); }
然后,程序就在第208行等待串口输入,以退出等待。等待期间,完全通过中断来驱
动触摸屏的操作。
最后,退出时,第211~213行屏蔽ADC中断。
2.触摸屏中断处理函数:转换触摸屏的工作模式
从图14.10可知,执行Test_Ts函数之后,触摸屏控制器处于“等待Pen Down中断模
式”。这时,如果按下触摸屏,则发生INT_TC中断,进入AdcTsIntHandle中断处理函数。
它很简单,只是判断当前中断是否是INT_TC还是INT_ADC,然后分别调用它们的中断
服务程序,代码如下:
174行/*
175行 *ADC,触摸屏的中断服务函数
176行 *对于INT_TC、INT_ADC中断,分别调用它们的处理程序
177行 */
178行 void AdcTsIntHandle(void)
179行 {
180行 if(SUBSRCPND & BIT_SUB_TC)
181行 Isr_Tc();
182行
183行 if(SUBSRCPND & BIT_SUB_ADC)
184行 Isr_Adc();
185行 }
AdcTsIntHandle()
INT_TC的中断服务程序Isr_Tc代码如下:
115行 /*
116行 *INT_TC的中断服务程序
117行 *按下时,进入自动x/y轴坐标转换模式
118行 *松开始,进入等待中断模式,再次等待INT_TC中断
119行 */
120行 static void Isr_Tc(void)
121行 {
122行 if(ADCDAT0 & 0x8000) //松开中断
123行 {
124行 printf("\nStylus Up!!\n");
125行 wait_down_int(); /*进入“等待中断模式”,等待按下*/
126行 }
127行 else //按下中断
128行 {
129行 printf("\nStylus Down: ");
130行
131行 mode_auto_xy(); /*进入自动x/y轴坐标转换模式*/
132行
133行 /*设置位[0]为1,启动AD转换
134行 *注意:ADCDLY为50000,PCLK = 50MHz
135行 * 要经过(1/50MHz) * 50000 = 1ms之后才开始转换x坐标
136行 * 再经过1ms之后才开始转换y坐标
137行 */
138行 ADCCON |= ADC_START;
139行 }
140行
141行 //清除INT_TC中断
142行 SUBSRCPND |= BIT_SUB_TC;
143行 SRCPND |= BIT_ADC;
144行 INTPND |= BIT_ADC;
145行 }
Isr_Tc()
第122行首先判断是按下还是松开中断,如果是松开中断,表示触碰完成。
第125行中通过wait_down_int()宏令触摸屏控制器进入“等待Pen Down
中断模式”,等待下一次操作。
如果是按下中断,则在131行通过mode_auto_xy()宏令触摸屏控制器进入
“自动x/y轴坐标转换模式”,然后在138行启动AD转换。也可以使用“分离的x/y
轴坐标转换模式”手动地分别转换x、y坐标。
3. 在ADC中断处理函数中获取x、y坐标
在“自动x/y轴坐标转换模式”下,x、y坐标都转换完毕之后,产生INT_ADC
中断,进入AdcTsIntHandle中断处理函数,它进而调用INT_ADC的中断服务
程序Isr_Adc,代码如下:
148行 /*
149行 *INT_ADC的中断服务程序
150行 *AD转换结束时发生中断
151行 *先读取x\y坐标值,再进入等待中断模式
152行 */
153行 static void Isr_Adc(void)
154行 {
155行 //打印x、y坐标值
156行 printf("xdata = %4d, ydata = %4d\r\n", (int)(ADCDAT0 & 0x3ff), (int)(ADCDAT1 & 0x3ff));
157行
158行 /*判断是2410还是2440*/
159行 if((GSTATUS1 == 0x32410000) || (GSTATUS1 == 0x32410002))
160行 { //S3C2410
161行 wait_down_int(); /*进入“等待中断模式”,等待触摸屏松开*/
162行 }
163行 else
164行 { //S3C2440
165行 wait_up_int(); /*进入“等待中断模式”,等待触摸屏松开*/
166行 }
167行
168行 //清除INT_ADC中断
169行 SUBSRCPND |= BIT_SUB_ADC;
170行 SRCPND |= BIT_ADC;
171行 INTPND |= BIT_ADC;
172行 }
Isr_Adc()
首先,第156行从ADCDAT0、ADCDAT1寄存器中读出x、y坐标值,并打印出来。
然后,通过第161或165行(对于S3C2410)或158行(对于S3C2440)令触摸屏控制器
进入“等待Pen Up中断模式”,等待触摸屏松开。
S3C2410的触摸屏控制器既等待PenDown中断,也等待Pen Up中断;
S3C2440触摸屏中断器可以分开设置:等待按下或等待松开。
14.2.5 实例测试
本程序在main函数中通过串口输出一个菜单,用于选择测试ADC或触摸屏。操作步骤
如下:
(1)使用串口将开发板的COM0和PC的串口相连,打开PC上的串口工具 并设置其波
特率为115200、8N1。
(2)生成可执行程序,adc_ts_2410或adc_ts_2440,烧入NAND Flash后运行。
在ADC_TS目录下执行“make”命令,生成adc_ts.bin。
(3)在PC上串口工具可以看到如下菜单:
#### Test ADC and Touch Screem ####
[A] Test ADC
[B] Test Touch Screen
Enter your selection:
(4)输入"A"以测试ADC,可以看到如下字样:
Measuring the voltage of AIN0 and AIN1,press any key to exit
AIN0 = 1.102V AIN1 = 1.108V
然后使用螺丝刀调整可变电阻ADJ0、ADJ1,可以在串口工具上看到它们的电压值不断变化。
最后,按任意键退回选择菜单。
(5)输入“T”以测试触摸屏,可以看到如下字样:
Touch the screem to test, press any key to exit
点击触摸屏可以在串口工具上看到触点坐标,可以看到类似下面字样:
Stylus Down: xdata = 489, ydata =516
松开触摸屏时可以看到如下提示:
Stylus Up!!
最后按任意键返回选择菜单。
注意:触摸屏的实际使用中还要考虑初始校正、去抖动、拖曳等功能。
附:代码:
链接: https://pan.baidu.com/s/1kV24a9L 密码: tfab
- JZ2440 裸机驱动 第13章 LCD控制器(1)
本章目标 了解LCD显示器的接口及时序: 掌握S3C2410/S3C2440 LCD控制器的使用方法: 了解帧缓冲区的概念,掌握如何设置帧缓冲区来显示图像: 13.1 LCD和LCD控制器 13.1 ...
- JZ2440 裸机驱动 第10章 系统时钟和定时器
本章目标 了解S3C2410/S3C2440的时钟体系结构 掌握通过设置MPLL改变系统时钟的方法 掌握在不同的频率下设置存储控制器的方法 掌握PWM定时器的用法 ...
- JZ2440 裸机驱动 第6章 存储控制器
本章目标: 了解S3C2410/S3C2440地址空间的布局 掌握如何通过总线形式访问扩展的外设,比如内存.NOR Flash.网卡等 ························ ...
- JZ2440 裸机驱动 第12章 I2C接口
本章目标: 了解I2C总线协议: 掌握S3C2410/S3C2440中I2C接口的使用方法: 12.1 I2C总线协议及硬件介绍 12.1.1 I2C总线协议 1 I2C总线的概念 2 I2C总线的信 ...
- JZ2440 裸机驱动 第11章 通用异步收发器UART
本章目标: 了解UART原理: 掌握S3C2410/S3C2440中UART的使用 11.1 UART原理及UART内部使用方法 11.1.1 UART原理说明 UART用于传输串行数据: ...
- JZ2440 裸机驱动 第9章 中断体系结构
本章目标: 了解ARM体系CPU的7种工作模式 了解S3C2410/S3C2440中断体系结构 掌握S3C2410/S3C2440的中断服务程序的编写方法 9.1 S3C241 ...
- JZ2440 裸机驱动 第8章 NAND Flash控制器
本章目标 了解NAND Flash 芯片的接口 掌握通过NAND Flash控制器访问NAND Flash的方法 8.1 NAND Flash介绍和NAND Flash控制器使用 NAND ...
- JZ2440 裸机驱动 第7章 内存管理单元MMU
本章目标: 了解虚拟地址和物理地址的关系: 掌握如何通过设置MMU来控制虚拟地址到物理地址的转化: 了解MMU的内存访问权限机制: 了解TLB.Cache.Write ...
- JZ2440 裸机驱动 第5章 GPIO接口
本章目标: 掌握嵌入式开发的步骤:编程.编译.烧写程序.运行 通过GPIO的操作了解软件如何控制硬件 5.1 GPIO硬件介绍 S3C2440A有130个多功能输入/输出口引脚 ...
随机推荐
- forget word qz_out_b1
1★ be bi prep 使~成为: 2★ bene b əni 好,善 :祈祷 3★ bi 2, 双重, 两个 bi 4★ by b æ / 通过,在~之前
- stimulsoft report工具—— 简单的多表连接打印报表例子
一.用报表工具打印多个表格信息(包括学生表.教师表.班级表) 1.准备打印的数据(用sqlserver) 1)班级表
- javascript开发HTML5游戏--斗地主(单机模式part3)
最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...
- tcp/ip协议之小解释
[转载] http://www.ruanyifeng.com/blog/2009/03/tcp-ip_model.html
- 《Effective Java 第二版》读书笔记
想成为更优秀,更高效程序员,请阅读此书.总计78个条目,每个对应一个规则. 第二章 创建和销毁对象 一,考虑用静态工厂方法代替构造器 二, 遇到多个构造器参数时要考虑用builder模式 /** * ...
- ZOJ2540 Form a Square
Form a Square 题意就是 判断 给你四个点,能否组成一个正方形 要点: 格式很重要, 很重要!!! 数据很小,直接暴力 四个点判断是否为正方形,只需将所有可能的边长度算出来,然后选其中最短 ...
- FMX StringGrid向上滑动自动加载记录(二)
写完FMX StringGrid向上滑动自动加载记录(一)自己也觉得不理想,实现的别扭与复杂,现在找到更好的实现方法,原来,StringGrid从基类TCustomPresentedScrollBox ...
- SWIFT Scan QRCode
SWIFT中扫描QRCode代码如下,照着敲一次再看下API的注释应该就没问题了. import UIKit import Foundation import AVFoundation class V ...
- FlytestingToolkit工具派送,懒人的测试思考
工欲善其事必先利其器,在IT路上摸爬这些年,去年我们分享了<Fiddler录制jmeter脚本,干货分享>,今天我们有另外的思考,我懒,故我思考. 下载解压后是这样的: 双击 Flytes ...
- docker-compose工具
环境:CentOS7.0 安装版本:1.3.2 参考资料:https://docs.docker.com/compose/install/ 安装方式: [root@Docker ~]#curl -L ...