ARM S3C2410硬件手册上的重要部分

发布者:快乐的旅程最新更新时间:2016-08-13 来源: eefocus关键字:ARM  S3C2410  硬件手册 手机看文章 扫描二维码
随时随地手机看文章
a.Memory Controller

b.Nand Flash

c.UART

d.Interrupt

e.Timer

Memory Controller

SDRAM:

S3C2410 提供了外接ROM、SRAM、SDRAM、NOR Flash、NAND Flash的接口。S3C2410外接存储器的空间被分为8 BANKS,每BANK容量为128M:当访问BANKx(x从0到7)所对应的地址范围x*128M到(x+1)*128M-1

SDRAM使用BANK6,它的物理起始地址为6*128M=0x30000000。

(注:bank就是片选,一个片选就是一个bank,在U-Boot中,配制的时候要配制SDRAM和FLASH的 bank数,那么如果你的SDRAM或者FLASH就接了一个片选的时候,就定义为1就可以了,其他的类推,2410和其他的大部分的处理器一样,支持NorFlash和NANDFlash启动,而这两种启动方式内存所映射的地址不怎么相同)

SDRAM(刷新):

之所以称为DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是DRAM最重要的操作。

那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。这样刷新速度就是:行数量/64ms

刷新操作分为两种:自动刷新(Auto Refresh,简称AR)与自刷新(Self Refresh,简称SR)。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。对于AR, SDRAM内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。

由于刷新涉及到所有L-Bank,因此在刷新过程中,所有L-Bank都停止工作,而每次刷新所占用的时间为9个时钟周期(PC133标准),之后就可进入正常的工作状态,也就是说在这9 个时钟期间内,所有工作指令只能等待而无法执行。

SR则主要用于休眠模式低功耗状态下的数据保存,这方面最著名的应用就是STR(Suspend to RAM,休眠挂起于内存)。在发出AR命令时,将CKE置于无效状态,就进入了SR模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。

SDRAM(寄存器设置):

本实验介绍如何使用SDRAM,这需要设置13个寄存器。由于我们只使用了BANK6,大部分的寄存器我们不必理会:

1.BWSCON:对应BANK0-BANK7,每BANK使用4位。这4位分别表示:

a.STx:启动/禁止SDRAM的数据掩码引脚,对于SDRAM,此位为0;对于SRAM,此位为1。

b.WSx:是否使用存储器的WAIT信号,通常设为0

c.DWx:使用两位来设置存储器的位宽:00-8位,01-16位,10-32位,11-保留。

d.比较特殊的是BANK0对应的4位,它们由硬件跳线决定,只读。

对于本开发板,使用两片容量为32Mbyte、位宽为16的SDRAM组成容量为64Mbyte、位宽为32的存储器,所以其BWSCON相应位为: 0010。对于本开发板,BWSCON可设为0x22111110:其实我们只需要将BANK6对应的4位设为0010即可,其它的是什么值没什么影响,这个值是参考手册上给出的。

2.BANKCON0-BANKCON5:我们没用到,使用默认值0x00000700即

3. BANKCON6-BANKCON7:设为0x00018005 在8个BANK中,只有BANK6和BANK7可以使用SRAM或SDRAM,所以BANKCON6-7与BANKCON0-5有点不同: a.MT([16:15]):用于设置本BANK外接的是SRAM还是SDRAM:SRAM-0b00,SDRAM-0b11

b.当MT=0b11时,还需要设置两个参数: Trcd([3:2]):RAS to CAS delay,设为推荐值0b01 SCAN([1:0]):

SDRAM的列地址位数,对于本开发板使用的SDRAM HY57V561620CT-H,列地址位数为9,所以SCAN=0b01。如果使用其他型号的SDRAM,您需要查看它的数据手册来决定SCAN的取值:00-8位,01-9位,10-10位

4. REFRESH(SDRAM refresh control register):设为0x008e0000+ R_CNT 其中R_CNT用于控制SDRAM的刷新周期,占用REFRESH寄存器的[10:0]位,它的取值可如下计算(SDRAM时钟频率就是HCLK):

R_CNT = 2^11 + 1 – SDRAM时钟频率(MHz) * SDRAM刷新周期(uS)

在未使用PLL时,SDRAM时钟频率等于晶振频率12MHz;

SDRAM 的刷新周期在SDRAM的数据手册上有标明,在本开发板使用的SDRAM HY57V561620CT-H的数据手册上,可看见这么一行“8192 refresh cycles / 64ms”:所以,刷新周期=64ms/8192 = 7.8125 uS。

对于本实验,R_CNT = 2^11 + 1 – 12 * 7.8125 = 1955, REFRESH=0x008e0000 + 1955 = 0x008e07a3

5.BANKSIZE:0x000000b2

位[7]=1:Enable burst operation

位[5]=1:SDRAM power down mode enable

位 [4]=1:SCLK is active only during the access (recommended) 位[2:1]=010:BANK6、BANK7对应的地址空间与BANK0-5不同。BANK0-5的地址空间都是固定的128M,地址范围是 (x*128M)到(x+1)*128M-1,x表示0到5。但是BANK7的起始地址是可变的,您可以从S3C2410数据手册第5章“Table 5-1. Bank 6/7 Addresses”中了解到BANK6、7的地址范围与地址空间的关系。

本开发板仅使用BANK6的64M空间,我们可以令位[2:1]=010(128M/128M)或001(64M/64M):这没关系,多出来的空间程序会检测出来,不会发生使用不存在的内存的情况——后面介绍到的bootloader和linux内核都会作内存检测。 位[6]、位[3]没有使用

6.MRSRB6、MRSRB7:0x00000030

能让我们修改的只有位[6:4](CL),SDRAM HY57V561620CT-H不支持CL=1的情况,所以位[6:4]取值为010(CL=2)或011(CL=3)。

Nand Flash

当OM1、OM0都是低电平——即开发板插上BOOT SEL跳线时,S3C2410从NAND Flash启动:NAND Flash的开始4k代码会被自动地复制到内部SRAM中。我们需要使用这4k代码来把更多的代码从NAND Flash中读到SDRAM中去。

NAND Flash的操作通过NFCONF、NFCMD、NFADDR、NFDATA、NFSTAT和NFECC六个寄存器来完成。在开始下面内容前,请打开S3C2410数据手册和NAND Flash K9F1208U0M的数据手册。

在S3C2410数据手册218页,我们可以看到读写NAND Flash的操作次序:

1.Set NAND flash configuration by NFCONF register.

2.Write NAND flash command onto NFCMD register.

3.Write NAND flash address onto NFADDR register.

4.Read/Write data while checking NAND flash status by NFSTAT register. R/nB signal should be checked before read operation or after program operation.

1、NFCONF:设为0xf830——

使能NAND Flash控制器、初始化ECC、NAND Flash片选信号nFCE=1(inactive,真正使用时再让它等于0)

设置TACLS、TWRPH0、TWRPH1。

需要指出的是TACLS、TWRPH0和TWRPH1,请打开S3C2410数据手册218页,可以看到这三个参数控制的是NAND Flash信号线CLE/ALE与写控制信号nWE的时序关系。

我们设的值为TACLS=0,TWRPH0=3,TWRPH1=0,其含义为:TACLS=1个HCLK时钟,TWRPH0=4个HCLK时钟,TWRPH1=1个HCLK时钟。

请打开K9F1208U0M数据手册第13页,在表“AC Timing Characteristics for Command / Address / Data Input”中可以看到: CLE setup Time = 0 ns,CLE Hold Time = 10 ns, ALE setup Time = 0 ns,ALE Hold Time = 10 ns, WE Pulse Width = 25 ns 可以计算,即使在HCLK=100MHz的情况下,TACLS+TWRPH0+TWRPH1=6/100 uS=60 ns,也是可以满足NAND Flash K9F1208U0M的时序要求的。

2、NFCMD: 对于不同型号的Flash,操作命令一般不一样。对于本板使用的K9F1208U0M,请打开其数据手册第8页“Table 1. Command Sets”

3、NFADDR:地址

4、NFDATA:数据,只用到低8位

5、NFSTAT:状态,只用到位0,0-busy,1-ready

6、NFECC:校验

现在来看一下如何从NAND Flash中读出数据:

1、NFCONF = 0xf830

2、在第一次操作NAND Flash前,通常复位一下:

NFCONF &= ~0x800 (使能NAND Flash)

NFCMD = 0xff (reset命令)

循环查询NFSTAT位0,直到它等于1

3、NFCMD = 0 (读命令)

4、这步得稍微注意一下,请打开K9F1208U0M数据手册第7页,那个表格列出了在地址操作的4个步骤对应的地址线,A8没用到:

NFADDR = addr & 0xff

NFADDR = (addr>>9) & 0xff (注意了,左移9位,不是8位)

NFADDR = (addr>>17) & 0xff (左移17位,不是16位)

NFADDR = (addr>>25) & 0xff (左移25位,不是24位)

5、循环查询NFSTAT位0,直到它等于1

6、连续读NFDATA寄存器512次,得到一页数据(512字节)

7、NFCONF |= 0x800 (禁止NAND Flash)

UART

UART的寄存器有11X3个(3个UART)之多,我选最简单的方法来进行本实验,用到的寄存器也有8个。不过初始化就用去了5个寄存器,剩下的3个用于接收、发送数据。

1、初始化:

a.把使用到的引脚GPH2、GPH3定义为TXD0、RXD0:

GPHCON |= 0xa0 GPHUP |= 0x0c (上拉)

b.ULCON0 ( UART channel 0 line control register ):设为0x03 此值含义为:8个数据位,1个停止位,无校验,正常操作模式(与之相对的是Infra-Red Mode,此模式表示0、1的方式比较特殊)。

c.UCON0 (UART channel 0 control register ):设为0x05 除了位[3:0],其他位都使用默认值。位[3:0]=0b0101表示:发送、接收都

使用“中断或查询方式”——本实验使用查询查询方式。

d.UFCON0 (UART channel 0 FIFO control register ):设为0x00 每个UART内部都有一个16字节的发送FIFO和接收FIFO,但是本实验不使用FIFO,设为默认值0

e.UMCON0 (UART channel 0 Modem control register ):设为0x00 本实验不使用流控,设为默认值0

f.UBRDIV0 ( R/W Baud rate divisior register 0 ):设为12 本实验未使用PLL, PCLK=12MHz,设置波特率为57600,则由公式 UBRDIVn = (int)(PCLK / (bps x 16) ) –1 可以计算得UBRDIV0 = 12,请使用S3C2410数据手册第314页的误差公式验算一下此波特率是否在可容忍的误差范围之内,如果不在,则需要更换另一个波特率(本实验使用的 57600是符合的)。

void init_uart( )

{//初始化UART

GPHCON |= 0xa0; //GPH2,GPH3 used as TXD0,RXD0

GPHUP = 0x0c; //GPH2,GPH3内部上拉

ULCON0 = 0x03; //8N1(8个数据位,无校验位,1个停止位)

UCON0 = 0x05; //查询方式

UFCON0 = 0x00; //不使用FIFO

UMCON0 = 0x00; //不使用流控

UBRDIV0 = 12; //波特率为57600 10 }

2、发送数据:

a.UTRSTAT0 ( UART channel 0 Tx/Rx status register ):位[2]:无数据发送时,自动设为1。当我们要使用串口发送数据时,先读此位以判断是否有数据正在占用发送口。位[1]:发送FIFO是否为空,本实验未用此位位[0]:接收缓冲区是否有数据,若有,此位设为1。本实验中,需要不断查询此位一判断是否有数据已经被接收。

b.UTXH0 (UART channel 0 transmit buffer register ): 把要发送的数据写入此寄存器。

void putc(unsigned char c)

{

while( ! (UTRSTAT0 & TXD0READY) ); //不断查询,直到可以发送数据

UTXH0 = c; //发送数据

}

3、接收数据:

a.UTRSTAT0:如同上述“2、发送数据”所列,我们用到位[0]

b.URXH0 (UART channel 0 receive buffer register ): 当查询到UTRSTAT0 位[0]=1时,读此寄存器获得串口接收到的数据。

unsigned char getc( )

{

while( ! (UTRSTAT0 & RXD0READY) ); //不断查询,直到接收到了数据

return URXH0; //返回接收到的数据

}

Interrrupt

SUBSRCPND和SRCPND寄存器表明有哪些中断被触发了,正在等待处理(pending);

SUBMASK(INTSUBMSK寄存器)和MASK(INTMSK寄存器)用于屏蔽某些中断。

1、“Request sources(without sub -register)”中的中断源被触发之后,SRCPND寄存器中相应位被置1,如果此中断没有被INTMSK寄存器屏蔽、或者是快中断(FIQ)的话,它将被进一步处理

2、对于“Request sources(with sub -register)”中的中断源被触发之后,SUBSRCPND寄存器中的相应位被置1,如果此中断没有被INTSUBMSK寄存器屏蔽的话,它在 SRCPND寄存器中的相应位也被置1,之后的处理过程就和“Request sources(without sub -register)”一样了

请打开S3C2410数据手册357页,“Figure 14-2. Priority Generating Block”显示了各中断源先经过6个一级优先级仲裁器选出各自优先级最高的中断,然后再经过二级优先级仲裁器选从中选出优先级最高的中断。IRQ的中断优先级由RIORITY寄存器设定,请参考数据手册365页,RIORITY寄存器中ARB_SELn(n从0到6)用于设定仲裁器n各输入信号的中断优先级,例如ARB_SEL6[20:19](0最高,其后各项依次降低):

00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-5

10 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5

RIORITY寄存器还有一项比较特殊的功能,如果ARB_MODEn设为1,则仲裁器n中输入的中断信号的优先级别将会轮换。例如ARB_MODE6设为1,则仲裁器6的6个输入信号的优先级将如下轮换(见数据手册358页)

使用中断的步骤:

1、当发生中断IRQ时,CPU进入“中断模式”,这时使用“中断模式”下的堆栈;当发生快中断FIQ时,CPU进入“快中断模式”,这时使用“快中断模式”下的堆栈。所以在使用中断前,先设置好相应模式下的堆栈。

2、对于“Request sources(without sub -register)”中的中断,将INTSUBMSK寄存器中相应位设为0

3、将INTMSK寄存器中相应位设为0

4、确定使用此的方式:是FIQ还是IRQ。

a.如果是FIQ,则在INTMOD寄存器设置相应位为1

b.如果是IRQ,则在RIORITY寄存器中设置优先级

使用中断的步骤:

5、准备好中断处理函数,

a.中断向量: 在中断向量设置好当FIQ或IRQ被触发时的跳转函数, IRQ、FIQ的中断向量地址分别为0x00000018、0x0000001c

b.对于IRQ,在跳转函数中读取INTPND寄存器或INTOFFSET寄存器的值来确定中断源,然后调用具体的处理函数

c.对于FIQ,因为只有一个中断可以设为FIQ,无须判断中断源

d.中断处理函数进入和返回

6、设置CPSR寄存器中的F-bit(对于FIQ)或I-bit(对于IRQ)为0,开中断

使用中断的步骤:

IRQ进入和返回

sub lr, lr, #4 @计算返回地址

stmdb sp!, { r0-r12,lr } @保存使用到的寄存器 ? ?

ldmia sp!, { r0-r12,pc }^ @中断返回 @^表示将spsr的值赋给cpsr

对于FIQ,进入和返回的代码如下:

sub lr, lr, #4 @计算返回地址

stmdb sp!, { r0-r7,lr } @保存使用到的寄存器 ? ?

ldmia sp!, { r0-r7,pc }^ @快中断返回, @^表示将spsr的值赋给cpsr

中断返回之前需要清中断:往SUBSRCPND(用到的话)、SRCPND、INTPND中相应位写1即可。对于INTPND,最简单的方法就是“INTPND=INTPND”

Timer几个重要寄存器介绍

1、TCFG0和TCFG1:分别设为119和0x03

这连个寄存器用于设置“Control Logic”的时钟,计算公式如下:

Timer input clock Frequency = PCLK / {prescaler value+1} / {divider value}

对于TIMER0,prescaler value = TCFG0[7:0],divider value由TCFG1[3:0]确定(0b000:2,0b001:4,0b010:8,0b0011:16,0b01xx:使用外部TCLK0)。

对于本实验,TIMER0时钟 = 12MHz/(119+1)/(16) = 6250Hz

2、TCNTB0:设为3125

在6250Hz的频率下,此值对应的时间为0.5S

3、TCON:

TIMER0对应bit[3:0]:

bit[3]用于确定在TCNT0计数到0时,是否自动将TCMPB0和TCNTB0寄存器的值装入TCMP0和TCNT0寄存器中

bit[2]用于确定TOUT0是否反转输出(本实验未用)

bit[1]用于手动更新TCMP0和TCNT0寄存器:在第一次使用定时器前,此位需要设为1,此时TCMPB0和TCNTB0寄存器的值装入TCMP0和TCNT0寄存器中

bit[0]用于启动TIMER0

4、TCONO0:只读寄存器,用于读取当前TCON0寄存器的值

关键字:ARM  S3C2410  硬件手册 引用地址:ARM S3C2410硬件手册上的重要部分

上一篇:S3C2443时钟管理
下一篇:lpc2124 启动代码详解

推荐阅读最新更新时间:2024-03-16 15:04

ARM工控核心板在免疫荧光检测仪中的应用
  免疫荧光检测仪根据荧光免疫分析原理,通过快速定量检测CRP(全程C-反应蛋白)以确定抗原或抗体的性质指导临床用药,检测流程如图1所示。   图1 荧光检测流程   免疫荧光检测仪控制板功能需求:   ●中英文显示界面及触摸屏操作;   ●RS-232接口,用于驱动微打、与单片机通讯;   ●以太网接口,与LIS(实验室信息管理系统)连接;   ●支持浮点运算,快速数据处理;   ●可靠电磁兼容设计,医疗器械认证。   1.1 免疫荧光检测仪控制板设计难点   1. 医疗器械认证失败,销售受阻   医疗检测器械为智能型电子设备,静电、电磁干扰直接影响检测的灵敏度与检测结果的准确性,造成医生误判,间接影
[单片机]
<font color='red'>ARM</font>工控核心板在免疫荧光检测仪中的应用
基于ARM的校园LED公告板远程控制系统设计
  近年来,LED 电子显示屏作为一种高科技产品日益引起人们的重视。它可以实时显示或循环播放文字、图形和图像信息,具有显示方式丰富、观赏性强、显示内容修改方便、亮度高、显示稳定且寿命长等多种优点,被广泛应用于诸多领域。随着LED 显示屏行业的不断发展, 人们对LED 显示屏的控制要求越来越高,尤其是LED 显示屏的远程控制,传统的单个LED 显示屏的控制已经很难满足多个LED 显示屏的应用场合。   目前,校园内的LED 公告板的使用越来越多,用于各类通知的宣传和传播,但其控制仍是以单块LED 公告板控制为主流,操作和更新显示屏信息十分不方便。在这种背景下,本设计对目前校园内的LED 公告板系统进行研究和改进,在原有的LED 公
[电源管理]
基于<font color='red'>ARM</font>的校园LED公告板远程控制系统设计
ARM9微控制器如何实现上层控制算法解析方案
引言 在很多嵌入式控制系统中,系统既要完成大量的信息采集和复杂的算法,又要实现精确的控制功能。采用运行有嵌入式Linux操作系统的ARM9微控制器完成信号采集及实现上层控制算法,并向DSP芯片发送上层算法得到控制参数,DSP芯片根据获得的参数和下层控制算法实现精确、可靠的闭环控制。 1 多机系统组成 该多机控制系统以ARM9微控制器s3c2440为核心,采用I2C总线挂载多个DSP芯片TMS320F28015作为协控制器,构成整个控制系统的核心。 1.1 S3C2440及TMS320F28015简介 Samsung公司的处理器S3C2440是内部集成了ARM公司ARM920T处理器内核的32位微控制器,资源丰富,带独立的
[单片机]
<font color='red'>ARM</font>9微控制器如何实现上层控制算法解析方案
全球最大NB-IoT商用网建成 中国联通将在10城市进行试点
中国联通在上海宣布NB-IoT网络试商用,带来的场景应用包括智能停车、智能消防、智能水务等。 NB-IoT是基于蜂窝的窄带互联网(Narrow Band Internet of Things)技术,也是未来物联网建设的主要标准。 中国联通集团副总经理姜正新在上海表示,联通将积极布局基于NB-IoT技术的物联网创新业务,建成全球最大的NB-IoT商用网络。 据介绍,目前中国联通已在上海、北京、广州、深圳等10余座城市开通了NB-IoT试点。其中,上海联通作为联通集团NB-IoT领域的桥头堡,今年2月已建成了全球最大规模的NB-IoT公用网络,是中国第一家实现全域覆盖的省级运营商,走在了世界前列,并推出了众多商用案例。
[网络通信]
集邦咨询:英伟达若收购了Arm,美国将主导全球芯片产业
针对英伟达拟以400亿美金收购全球IP龙头Arm一案,集邦咨询(TrendForce)旗下拓墣产业研究院表示,倘若英伟达成功收购软银旗下的Arm,美国将掌握x86与Arm两大阵营的生态系统,从而在CPU领域建立起无可撼动的地位,无疑将加大美国对中国半导体发展的牵制力道。 拓墣产业研究院分析师姚嘉洋指出,此收购案完成后,英伟达短期内的重心还是以数据中心与自动驾驶汽车两大领域为主。在数据中心方面,英伟达过去一直是重要配角,但长年来数据中心一直被英特尔的x86架构所垄断,尽管Arm阵营近期在超级运算领域取得冠军,但终究是宣誓大于实质意义。如今英伟达的GPU加上Arm的CPU架构,或许有机会一改数据中心的生态面貌。 而英伟达在自动驾驶
[手机便携]
告别功臣欧德宁,英特尔为什么没干过ARM
钛媒体注:公正的评价任何人都是及其困难的,包括著名公司的CEO。欧德宁的卸任成为2013年科技巨头历史上的热门话题,而对欧德宁任期内的评价也众说纷纭。欧德宁为英特尔工作了四十年,担任CEO八年,带领英特尔成为计算机史上领先的芯片制造世界级企业,而最近一个十年中,却因错失移动端的大好趋势而饱受诟病,风头大减。英特尔曾经开创了未来,而未来能否体面的活下去?这是所有人的疑问。 正如《大西洋月刊》编辑所说,“若是仅对欧德宁齐声说一句再见,就完全低估了他作为世界上最重要芯片制造商的领袖所作的贡献”。论业绩,欧德宁对英特尔功不可没;而在移动端的迷思,也恰恰受到了英特尔固有企业文化的影响和禁锢,到底是领导者欧德宁的短视?还是不可避免的变革失败
[半导体设计/制造]
s3c2410_gpio_cfgpin等内核导出函数
//这里面的函数都是内核导出函数/plat-s3c24XX/gpio.c中 #include linux/kernel.h #include linux/init.h #include linux/module.h #include linux/interrupt.h #include linux/ioport.h #include linux/io.h #include mach/hardware.h #include mach/gpio-fns.h #include asm/irq.h #include mach/regs-gpio.h //设置gpio的工作模式,是输入,输出还是其他的 //s3c2410
[单片机]
Arm Neoverse正在成为数据中心的新势力
Arm在拥有手机和物联网设备的通用计算能力后,其下一步行动目前尚不明朗。尽管x86巨头在数据中心占据主导地位,但Arm和RISC-V之间在小型平台上的竞争已初露端倪。然而,Arm一直在积极拓展其业务,向上发展至基础设施领域,包括云计算、有线和无线通信,甚至延伸到网关和边缘设备。起初,他们的步伐是稳健的,但最近他们更积极地寻求取代主流处理器和FPGA,成为以AI为中心的GPU的前端,广泛应用于超大规模扩展、DPU、电信公司的网关和无线基带,以及汽车等边缘应用领域。在我看来,这是对支撑我们所有电子技术的快速增长和高价值基础设施的一次重要而未被充分认识的布局。 Arm的Neoverse系列在基础设施领域持续占据一席之地。以英伟达的超
[嵌入式]
<font color='red'>Arm</font> Neoverse正在成为数据中心的新势力
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved