第一范文网 - 专业文章范例文档资料分享平台

ARM硬件试题库及答案

来源:用户分享 时间:2025/5/19 0:18:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

320x240的LCD

(0.5分

以原点为圆心,50为半径画圆

画笔移动到坐标(-50,-50)处 (0.5分) 从坐标(-50, -50)到(50, -50)画直线 (0.5分)

从当前坐标开始以30为半径顺时针画圆弧到坐标(80, -20) (0.5分)

3、在划线处添加代码,完成下面的程序,实现在task1中计算1到10的平均值,完成后

向task2发送信号量。Task2无限期等待信号量,等到后在LCD上显示收到平均值。 ___ OS_EVENT *math_Sem;__;

Void Task1()

{ int i ,average=0,sum=0; __ math_Sem=OSSemCreate(0);__ for(i=1;i<=10;i++) {

sum=sum+i; }

average=sum/10; _ OSSemPost(math_Sem);__;

for(;;)

{ OSTimeDly(100);}

}

void task2() { __ U8 err; ___;

for(;;)

{ _ OSSemPend(math_Sem,0,&err);_ ;

LCD_printf(\!\\n\

}

}

____ OSTimeDly(100);__ ;

4、在划横线处添加代码,完成下面创建一个任务的过程,要求优先级为36,任务栈大小为256。

OS_STK task1_Stack [256]={0, }; void task1 (void *Id); #define task1_Prio 36 OSInit() ; //操作系统初始化

OSTaskCreate (task1,(void *)0,(OS_STK *)&task1_Stack[256-1],task1_Prio); OSStart() ;//操作系统任务调度开始

5、ARM指令集的每一条指令都是4字节的,下面是一段中断入口程序,在空白处填上该中断的类型和中断向量。

ENTRY B B B B B

Startup

; ; ; ; ;

复位中断,0x00 1分 未定义指令中断,0x04 软中断,0x08

1分

1分

UndefHandle SWIHandle

PAbtHandle DAbtHandle

预取中止,0x0C 1分

数据中止,0x00000010

NOP; B B

; 系统保存未用,0x00000014 ; ;

IRQ中断,0x18 快速中断,0x1C 1分 1分 IRQHandle FIQHandle

6、下面的程序描述了键盘消息的创建和使用过程,认真阅读并在划横线的地方添加适当的注释。

void Key_Scan_Task(void *Id)//按键扫描任务 {

U32 key; INT8U err; POSMSG pmsg; for (;;){

OSMboxPend(Key_MailBox, 0, &err); //__请求键盘邮箱 1分

key=Zlg7289_ReadKey();

pmsg=OSCreateMessage(NULL, OSM_KEY,KeyBoard_Map[key],0);

;//__请求到表示有键按下的邮箱 1分

}

void Main_Task(void *Id) //接收键盘消息的任务 {

POSMSG pMsg=0;//创建消息结构 for(;;) {//死循环

pMsg=WaitMessage(0); //___发送消息 1分

switch(pMsg->Message){ //___判断消息的类型 1分

}

if(pmsg)

SendMessage(pmsg); //_创建消息

1分

case OSM_KEY://键盘消息

LCD_printf(\向液晶屏输出

}

}

break; }

DeleteMessage(pMsg) ; //___删除消息 1分

7、三个任务代码如下,其中task1、task2、task3的优先级分别为:29、36,48。分析LCD上的显示结果。

Void task1() {

ClearScreen();

LCD_Printf(“task1 is running!\\n”); OSTimeDly(500); }

Void task2() {

ClearScreen();

LCD_Printf(“this is task2!\\n”); OSTimeDly(350); }

Void task3() {

ClearScreen();

LCD_Printf(“running task3!\\n”); OSTimeDly(200); }

在LCD上的显示结果为:

第一次:task1 is running!

第二次:this is task2! 第三次:running task3! 第四次:running task3! 第五次:this is task2!

(1分) (1分) (1分) (1分) (1分)

第六次:task1 is running! (1分)

8、C语言程序

#include\ /* uC/OS interface */ #include \#include \#include

OS_STK Main_Stack[STACKSIZE*8]={0, }; //1) 定义并初始化堆栈(数组) void Main_Task(void *Id);

#define Main_Task_Prio 12 // 2) 定义任务优先级

OS_EVENT *Nand_Rw_Sem; //3) 定义信号量 OS_EVENT *Uart_Rw_Sem; int main(void) {

ARMTargetInit(); //开发板初始化

OSInit(); //4) 操作系统初始化 uHALr_ResetMMU();//复位MMU

LCD_Init(); //初始化LCD模块

LCD_printf(\向液晶屏输出数据 LCD_printf(\ Text Mode\\n\ initOSGUI();//初始化图形界面

搜索更多关于: ARM硬件试题库及答案 的文档
ARM硬件试题库及答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4iiy26ny0j2r4yi9c21r_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top