电科计科专业嵌入式试题B卷附答案Word文档下载推荐.docx
《电科计科专业嵌入式试题B卷附答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电科计科专业嵌入式试题B卷附答案Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
(B)对外部事件做出反映的时间长短;
(C)对外部事件处理时间是否可预测;
(D)对外部事件处理的逻辑结果是否正确;
2.哈佛体系结构的微处理器具有以下特点()。
(A)程序存储和数据存储共用一个物理存储空间;
(B)程序存储和数据存储不分具体的物理空间;
(C)程序存储和数据存储分为同一个物理空间的两个部分;
(D)程序存储和数据存储分为两个独立的物理存储空间;
3.ARM处理器的特权模式不包括下列的那一种运行模式()。
(A)管理模式。
(B)中断模式。
(C)系统模式。
(D)用户模式。
4.ARM处理器支持4种类型的堆栈工作方式,其中空递增堆栈是()。
(A)堆栈指针指向最后压入的数据,且由低地址向高地址生长;
(B)堆栈指针指向下一个空位置,且由低地址向高地址生长;
(C)堆栈指针指向最后压入的数据,且由高地址向低地址生长;
(D)堆栈指针指向下一个空位置,且由高地址向低地址生长;
5.当ARM微处理器使用16bit的数据总线时,存储器的地址与ARM微处理器的地址的连接方式应该是()
(A)存储器的A0与ARM的A0连在一起,其他引脚依此连接;
(B)存储器的A0与ARM的A1连在一起,其他引脚依此连接;
(C)存储器的A0与ARM的A2连在一起,其他引脚依此连接;
(D)存储器的A0与ARM的A3连在一起,其他引脚依此连接;
6.S3C2440A的启动代码Bootloader一般存放在系统的Flash存储器中,这部分地址空间一般应配置在()。
(A)Bank0~Bank7都可以(B)Bank0
(C)Bank6/Bank7(D)任何一段空闲地址区域
7.ARM微处理器的内存管理单元MMU主要完成的功能是()。
(A)主存储器和CPU之间的高速缓存;
(B)NandFlash的管理单元;
(C)从虚拟地址到物理地址的映射;
(D)存储器块Bank的管理单元;
8.抢占式实时操作系统总是()。
(A)运行就绪状态下排在最前面的任务(B)运行时间片轮转到的任务
(C)运行优先级最高的任务(D)运行就绪状态下优先级最高的
9.从Thumb状态进入到ARM状态可通过()代码实现。
(A)ADRR0,Back_ARM+1(B)ADRR0,Back_ARM
BXR0BLR0
(C)ADRR0,Back_ARM+1(D)ADRR0,Back_ARM
BLR0BXR0;
10.STMDBR1!
,{R0,R2,R3}指令执行后,R1的值变为()。
(A)R1—>
R1;
(B)R1﹣4—>
(C)R1﹣8—>
(D)R1﹣12—>
二、简答题(本大题共12分,每小题6分)
1.简要说明S3C2440A的UART数据发送和接收的基本原理。
2.简要说明S3C2440A的DMA控制器进行数据传输的具体过程。
三、分析题(本大题共12分,每小题6分)仔细阅读下列程序代码,写出它们所完成和实现的功能。
(1)Uart_GetKey(void){
if(rUTRSTAT0&0x1)
returnRdURXH0();
else
return0;
}
(2)mystrcopy
LDRBr2,[r1],#1
STRBr2,[r0],#1
CMPr2,#0
BNEmystrcopy
MOVpc,lr
四、编程题(本大题共12分)利用S3C2410的UART波特率系数寄存器UBRDDIVn,设计一个波特率为115200bps,系统时钟MCLK为40MHz的波特率发生器,要求算出分频值,并对分频寄存器进行初始化。
五、设计题(本大题共14分)蜂鸣器可通过I/O口GPB0通过NPN型三级管的基极控制。
当三极管的基极加高电平,即GPB0为高电平时,蜂鸣器会响,反之则不响。
试编写一程序,让蜂鸣器发声。
。
六、编程题(本大题共14分)将K1、K2按键开关分别接S3C2440A的EINT0和EINT2,利用K1、K2作为外部中EINT0、EINT2,设计一外部中断程序。
七、编程题(本大题共16分,每小题8分)有4个LED分别由GPF4、GPF5、GPF6、GPF7驱动控制,试设计一个接口电路,要求:
(1)画出LED接口电路原理图;
(2)用C语言编写循环点亮4个LED的程序。
B卷参考答案及评分标准
一、
(1)B
(2)D(3)D(4)B(5)B
(6)B(7)C(8)D(9)D(10)D
二、
1、
(1)数据发送(DataTransmission)
发送的数据帧是可编程的。
它包括1个起始位、5~8个数据位、1个可选的奇偶校验位和1~2个停止位,具体设置由行控制寄存器(ULCONn)确定。
发送器还可以产生暂停状态,在一帧发送期间连续输出“0”。
在当前发送的字完全发送完成之后发出暂停信号。
在暂停信号发出后,继续发送数据到TxFIFO(发送保持寄存器在非FIFO模式)。
3分
(2)数据接收(DataReception)
与数据发送类似,接收的数据帧也是可编程的。
它包括1个起始位,5~8个数据位、1个可选的奇偶校验位和1~2个停止位,具体设置由行控制寄存器(ULCONn)确定。
接收器可以检测溢出错误和帧错误。
溢出错误指新数据在旧数据还没有被读出之前就将其覆盖了。
帧错误指接收的数据没有有效的停止位。
当在3个字时间段没有接收任何数据和在FIFO模式RxFIFO不空时,产生接收暂停状态。
2、
(1)外设向DMA控制器发出DMA请求。
(2)DMA控制器向CPU发出总线请求信号。
2分
(3)CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信号。
(4)CPU将控制总线、地址总线及数据总线让出,由DMA控制器进行控制。
(5)DMA控制器向外部设备发出DMA请求回答信号。
(6)进行DMA传送。
(7)数据传送完毕,DMA控制器通过中断请求线发出中断信号。
CPU在接收到中断信号后,转人中断处理程序进行后续处理。
(8)中断处理结束后,CPU返回到被中断的程序继续执行。
CPU重新获得总线控制权。
2分
三、
1、通过0号串口接收数据6分
2、将r1指向的字符串复制到r0。
6分
四、
分频寄存器UBRDIVn的值通过下式决定:
UBRDIVn=(round_off)(MCLK/(bpsx16))-16分
式中分频寄存器(UBRDIVn)的值从1~(2^16-1).例如,
如果要使波特率为115200bps,MCLK是40MHz,则
UBRDIVn应为:
UBRDIVn=(取整)(40000000/(115200x16)+0.5)-1
=(取整)(21.7+0.5)-16分
=22-1=21
五、
intBellMain()
{
#defineGPBCON(*(volatileunsigned*)0x56000010)
#defineGPBDAT(*(volatileunsigned*)0x56000014)
#defineGPBUP(*(volatileunsigned*)0x56000018)
voidDelay(unsignedint);
5分
GPBUP&
=0XFFFFFFFE;
//上拉使能GPB0
GPBCON&
=0XFFFFFFC;
//GPB0设为输出
GPBCON|=0X0000001;
while
(1)
GPBDAT&
=0xfe;
Delay(40);
GPBDAT|=0x1;
//用与或方式,不影响其他位
}
return(0);
voidDelay(unsignedintx)4分
unsignedinti,j,k;
for(i=0;
i<
=x;
i++)
for(j=0;
j<
=0xff;
j++)
for(k=0;
k<
k++);
六、
staticvoid__irqEint0_ISR(void)
Delay(10);
ClearPending(BIT_EINT0);
4分
Uart_Printf("
EINT0isoccurred.\n"
);
staticvoid__irqEint2_ISR(void)
ClearPending(BIT_EINT2);
EINT2isoccurred.\n"
//中断初始化函数
voidEint_Init(void)
rGPFCON=rGPFCON&
~(3)|(1<
<
1);
//GPF0设置为EINT0
~(3<
4)|(1<
5);
//GPF2设置为EINT2
rGPFUP|=(1<
0);
//disableGPF0pullup5分
2);
//disableGPF2pullup
rEXTINT0=(rEXTINT0&
~(7<
0))|(2<
//EINT0->
fallingedgetriggered
8))|(2<
8);
//EINT2->
rEXTINT1=(rEXTINT1&
12))|(0x2<
12);
//EINT11->
rEXTINT2=(rEXTINT2&
//EINT19->
pISR_EINT0=(unsigned)Eint0_ISR;
pISR_EINT2=(unsigned)Eint2_ISR;
}//开外部中断
voidEnable_Eint(void)
rEINTPEND=0xffffff;
//toclearthepreviouspendingstates
rSRCPND|=BIT_EINT0|BIT_EINT2;
rINTPND|=BIT_EINT0|BIT_EINT2;
rEINTMASK=~((1<
11)|(1<
19));
rINTMSK=~(BIT_EINT0|BIT_EINT2);
七、
8分
#defineGPFCON(*(volatileunsigned*)0x56000050);
#defineGPFDAT(*(volatileunsigned*)0x56000054);
#defineGPFUP(*(volatileunsigned*)0x56000058);
Intmain()
GPFCON=(GPFCON|0xff00)&
ffff55ff);
GPFUP|=0xf0;
While
(1)
inti=0;
GPFDAT=(GPFDAT&
ffffff0f)|0xe0;
Delay(100);
ffffff0f)|0xd0;
ffffff0f)|0xb0;
ffffff0f)|0x70;
}