嵌入式工程师笔试试题及答案_第1页
嵌入式工程师笔试试题及答案_第2页
嵌入式工程师笔试试题及答案_第3页
嵌入式工程师笔试试题及答案_第4页
嵌入式工程师笔试试题及答案_第5页
已阅读5页,还剩9页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式工程师笔试试题及答案一、单项选择题(每题2分,共20分)1.下列哪项是嵌入式系统最核心的特点?A.体积小B.功耗低C.专用性D.成本低答案:C解析:嵌入式系统以应用为中心,以计算机技术为基础,专用性是区别于通用计算机系统的本质特征;体积、功耗、成本等是具体表现。2.ARMCortex-M3处理器支持的主要指令集是?A.ARM指令集B.Thumb指令集C.Thumb-2指令集D.x86指令集答案:C解析:Cortex-M3首次采用Thumb-2指令集,不支持传统的完整ARM指令集。3.关于UART通信,下列描述正确的是?A.同步通信,需要时钟线B.异步通信,帧起始位为高电平C.异步通信,帧起始位为低电平D.同步通信,数据位先低位后高位答案:C解析:UART为异步串行通信,空闲时线为高电平,起始位拉低表示数据帧开始。4.在嵌入式系统中,看门狗定时器的主要作用是?A.产生精确延时B.监测程序运行,防止程序跑飞C.提供实时时钟D.捕获输入信号答案:B5.下列哪种存储器掉电后内容不丢失?A.SRAMB.DRAMC.FlashD.寄存器答案:C6.关于RTOS中的互斥量,下列说明正确的是?A.可以被多个任务同时持有B.支持优先级继承,可有效缓解优先级反转C.必须在中断服务函数中释放D.与二值信号量完全相同答案:B解析:互斥量具有所有权,支持优先级继承;二值信号量通常不继承优先级,也不适合在中断中释放互斥量。7.I2C总线起始条件对应的SDA与SCL电平变化是?A.SCL为高时,SDA由高变低B.SCL为高时,SDA由低变高C.SCL为低时,SDA由高变低D.SCL为低时,SDA由低变高答案:A8.下列哪项不是RISC体系结构的特征?A.指令长度固定B.寄存器数量多C.指令功能复杂D.便于流水线实现答案:C解析:RISC指令简单规整,指令功能复杂是CISC的特征。9.嵌入式系统启动时,将程序从Flash复制到RAM中运行的主要目的是?A.节省Flash空间B.提高程序执行速度C.防止程序被修改D.方便程序在线升级答案:B10.“交叉编译”在嵌入式开发中的含义是?A.在目标机上编译程序B.在宿主机上编译生成目标机可执行代码C.用汇编语言编写全部程序D.编译与链接同步进行答案:B二、多项选择题(每题3分,共15分)1.下列属于嵌入式系统常用外设通信接口的有?A.UARTB.SPIC.I2CD.CAN答案:ABCD解析:UART、SPI、I2C、CAN均为嵌入式系统中广泛使用的通信接口。2.关于ARMCortex-M3的中断与异常,下列说法正确的有?A.中断控制由NVIC统一管理B.支持中断嵌套C.中断向量表可以重定位D.所有中断优先级固定相同答案:ABC解析:NVIC可配置各中断优先级,因此D错误;向量表可通过VTOR重定位到SRAM或其他位置。3.嵌入式C语言中,volatile关键字的作用包括?A.告知编译器该变量可能被外部异步修改B.防止编译器将变量访问优化到寄存器中C.使变量自动分配在Flash中D.保证变量读写的原子性答案:AB解析:volatile仅防止优化,不提供原子性;变量的存储位置由链接器决定。4.下列属于嵌入式系统开发与调试工具的有?A.交叉编译器B.在线调试器(JTAG/SWD)C.逻辑分析仪D.示波器答案:ABCD解析:交叉编译器用于生成目标代码,JTAG/SWD用于下载调试,逻辑分析仪和示波器用于硬件信号验证。5.关于嵌入式Linux,下列说法正确的有?A.内核源码开放,可根据应用裁剪B.支持ARM、MIPS、x86等多种处理器架构C.具有严格的硬实时性保证D.可通过uClinux应用于无MMU的处理器答案:ABD解析:标准Linux不是硬实时系统,虽然可通过RT-Preempt等补丁改善实时性,但无严格硬实时保证,故C错误。三、填空题(每空1分,共10分)1.UART帧格式通常包含起始位、数据位、__和__。答案:奇偶校验位;停止位2.I2C总线的两根信号线分别是__和__。答案:SDA;SCL3.在C语言中,定义不可修改的变量使用关键字__,声明可能被外部异步修改的变量使用关键字__。答案:const;volatile4.FreeRTOS中,创建任务的函数名为__,任务延时函数名为__。答案:xTaskCreate;vTaskDelay5.某定时器输入时钟为72MHz,预分频系数为72,计数器从0计数到999后溢出,则定时器计数频率为__MHz,溢出周期为__ms。答案:1;1解析:fcnt四、判断题(每题1分,共10分)1.嵌入式系统必须包含操作系统才能工作。答案:错误2.看门狗定时器溢出通常会导致系统复位。答案:正确3.UART是一种同步串行通信接口。答案:错误4.GPIO引脚只能配置为输入模式或输出模式。答案:错误解析:许多MCU的GPIO还支持复用、模拟等模式。5.volatile关键字可以避免编译器对共享变量访问的不当优化。答案:正确6.在C语言中,函数指针可以作为结构体成员。答案:正确解析:函数指针完全可以用作结构体成员,实现类似面向对象的回调机制。7.中断服务函数可以调用操作系统提供的任意API函数。答案:错误解析:仅可调用专门标记为“从ISR安全”的API,且不能调用可能阻塞或不可重入的函数。8.嵌入式Linux一定是实时操作系统。答案:错误9.交叉编译器运行在宿主机上,生成目标机可执行代码。答案:正确10.Flash存储器的写入速度通常快于RAM。答案:错误五、简答题(每题5分,共15分)1.简述嵌入式系统的定义,并说明它与通用计算机系统的主要区别。答案:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。它与通用计算机系统的主要区别:(1)专用性强,按具体应用定制;(2)资源受限,存储容量、处理器性能通常较小;(3)实时性要求高,许多应用有严格的时间约束;(4)开发方式以交叉开发为主,目标机不提供完整开发环境。2.简述中断处理的一般流程(以ARMCortex-M为例)。答案:(1)外设产生中断请求,NVIC根据优先级判定是否响应;(2)响应后自动压栈保存现场(寄存器、返回地址等);(3)从向量表取出对应中断服务程序入口地址;(4)执行中断服务程序,进行中断处理并清除中断标志;(5)中断返回时恢复现场,回到被中断的程序继续执行。若RTOS中存在中断同步机制,还需通知相应任务进行后续处理。3.简述SPI与I2C总线的主要区别(至少列举三点)。答案:(1)信号线数量:SPI通常使用SCK、MOSI、MISO、CS四根线;I2C使用SCL、SDA两根线。(2)通信方式:SPI为全双工同步通信;I2C为半双工同步通信。(3)设备寻址:SPI通过片选信号CS选通从机;I2C通过设备地址字节寻址。(4)速率与总线管理:SPI速率通常更高;I2C支持多主机总线仲裁,速率相对较低。六、综合题(每题15分,共30分)1.阅读以下嵌入式C程序,指出其中至少四处错误或隐患,并逐一说明理由和修改建议。#include<stdio.h>

intflag=0;

voidEXTI0_IRQHandler(void)

{

delay_ms(10);

printf("Keypressed!\n");

flag=1;

}

intmain(void)

{

EXTI0_Init();

while(1){

if(flag==1){

printf("Mainloophandlesevent\n");

flag=0;

}

}

return0;

}答案:本程序至少存在以下四处错误或隐患:(1)共享标志未用volatile修饰。flag在中断与主循环中同时使用,但未声明为volatile,编译器可能将if(flag==1)优化为只读取一次,导致主循环无法感知中断修改。修改建议:将定义改为volatileintflag=0;。(2)中断服务程序中调用了延迟函数和printf。delay_ms和printf通常不可重入且可能阻塞,在ISR中调用会严重破坏实时性,甚至造成死锁或数据错乱。修改建议:ISR内只做必要的置位、清标志或通过RTOS机制通知任务,将打印和延时放在主循环或任务中执行。(3)未清除外部中断挂起标志。若EXTI的挂起位未清零,中断将不断触发,系统陷入死循环。修改建议:在ISR中调用类似EXTI_ClearITPendingBit(EXTI0_IRQn);的库函数,及时清除中断标志。(4)主循环采用轮询方式处理事件。轮询会持续占用CPU,且事件响应延迟不确定,无法体现中断的实时优势。修改建议:使用RTOS的信号量、事件标志组或任务通知;若无RTOS,可让主循环进入低功耗等待唤醒,并在中断中触发唤醒。(5)中断没有通过NVIC正确配置优先级与使能。实际工程中还需完成NVIC初始化、GPIO复用配置等,否则ISR不会执行。修改建议:在EXTI0_Init()中完成对应引脚和NVIC配置。(答出以上四点即可,合理表述均可得分。)2.基于STM32平台,使用标准外设库编写按键控制LED的程序。要求:按键PA0按下为低电平,LED接PC13,推挽输出,低电平点亮。编程实现按键按下并消抖后翻转LED状态,可选用中断方式或轮询方式。请给出关键初始化代码和中断服务函数(或主循环逻辑),并简述消抖原理。答案:以下采用外部中断+延时消抖方式实现。voidLed_Key_GPIO_Init(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

/*PA0上拉输入,按键按下接地为低电平*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;

GPIO_Init(GPIOA,&GPIO_InitStructure);

/*PC13推挽输出*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOC,&GPIO_InitStructure);

}

voidEXTI0_NVIC_Init(void)

{

EXTI_InitTypeDefEXTI_InitStructure;

NVIC_InitTypeDefNVIC_InitStructure;

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);

EXTI_InitStructure.EXTI_Line=EXTI_Line0;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(&EXTI_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

voidEXTI0_I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论