《第4部分-计算机程序设计员(嵌入式应用-ARM)_3级_应用分析复习题.doc》由会员分享,可在线阅读,更多相关《第4部分-计算机程序设计员(嵌入式应用-ARM)_3级_应用分析复习题.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4部分应用分析复习题【C语言基础】一、单项选择题(选择一个正确的答案,将相应的字母填入题内的括号中) 1.定义一个只能在本C文件内使用,而不能被其他文件引用的变量需用( )来声明(A)extern (B)static (C)auto (D)register2.C语言中形参的默认存储类别是( )(A)自动(auto) (B)静态(static) (C)寄存器(register) (D)外部(extern)3.有如下程序:#include int max ( x, y ) int z;if ( x y ) z = x; else z = y;return ( z );mian ( ) exter
2、n int a, b; printf ( “ max = %dn”, max ( a, b) ); int a = 3, b = 5;运行结果为( )(A)max = 3 (B)max = 4 (C)max = 5 (D)max = 64.以下哪项的使用会提高循环的效率( )(A)尽量把最长的循环放在最外层,最短的循环放在最内层(B)尽量少使用嵌套循环(C)在循环语句的选择时首选for语句(D)如果循环体内存在逻辑判断,并且循环次数较多,宜将逻辑判断移到循环体外。5.在下面循环语句中内层循环体S执行的次数为( )for ( i = 0; i n; i+ ) for (j = i; j n; j
3、 + ) S;(A)n2 (B)( n + 1 )/2 (C)n ( n 1 )/2 (D)n (n + 1)/26.在下面循环语句中内层循环体S执行的次数为( )for ( i = 0; i n; i+ ) for (j = 0; j n; j + ) S;(A)n2 (B)( n + 1 )/2 (C)n ( n 1 )/2 (D)n (n + 1)/27.有程序段char a = “hello”;char *p = “world”;以下不合法的语句是( )(A)p0 = x; (B)a0 = x; (C)p = a; (D)p = &a1;8.若使用32位机,有以下程序段char a =
4、 “hello world”;char *p = a;Printf(“ %d, %dn”, sizeof(a) ,sizeof(p) );输出结果正确的是( )(A)12, 12 (B)10, 10 (C)12, 4 (D)10, 4 9.若使用32位机,有以下程序段void func( char a100) printf(“%d”, sizeof(a) );输出结果为( )(A)4 (B)100 (C)101 (D)不能确定10.C语言中除了用#define外海可以用( )来定义常量(A)int (B)char (C)const (D)auto11.用#define定义的常量是( )(A)全
5、局的 (B)局部的 (C)静态的 (D)寄存器的12.以下程序:#define N 2#define M N +1#define NUM (M + 1) * M/2#include main( ) int I; for( i = 1; i = NUM; i +) printf(“ %dn”, i );for循环执行的次数是( )(A)5 (B)6 (C)8 (D)913.若有以下调用语句,则不正确的fun函数的首部是( )main( ) int a50, n; fun(n, &a9);(A)void fun( int m, int x ) (B)void fun( int s, int h41
6、)(C)void fun( int p, int *s) (D)void fun( int n, int a)14.以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序:#include void sort( int a , int n ) int i, j, t; for( I = 0; I n 1; I +) for( j = I + 1; j n; j +) if( ai aj ) t = ai; ai = aj; aj = t;main( ) int aa10 = 1,2,3,4,5,6,7,8,9,10, i; sort( &aa3, 5); for( i = 0; i
7、10; i + ) printf(“ %d,”, aai); printf(“n”);程序执行后的输出结果是( )(A)1,2,3,4,5,6,7,8,9,10, (B)10,9,8,7,6,5,4,3,2,1,(C)1,2,3,8,7,6,5,4,9,10, (D)1,2,10,9,8,7,6,5,4,315.以下程序的输出结果是( )int b =2;int func(int *a) b += *a; return(b);main( ) int a = 2, res = 2; res += func(&a); printf(“ %dn”, res);(A)4 (B)6 (C)8 (D)10
8、16.下列const不可以修饰的选项是( )(A)函数的参数 (B)函数的返回值 (C)函数的定义体 (D)函数的地址17.下列const可以修饰的选项是( )(A)常量 (B)字符变量 (C)关键字 (D)实型变量18.下列const可以修饰的选项是( )(A)整型变量 (B)函数的参数 (C)实型变量 (D)字符变量19.33. 以下程序的输出结果是( )#include int f( int n) if( n = 1) return 1; else return f(n - 1) + 1;main( ) int i, j = 0; for( i = 1; i 3; i +) j += f
9、(i); printf(“ %dn”, j);(A)4 (B)3 (C)2 (D)320.以下程序的输出结果是( )#include int abc ( int u, int v);main( ) int a = 24, b = 16, c; c = abc(a, b); printf(“ %dn”, c);int abc(int u, int v) int w; while(v) w = u%v; u = v; v = w;return u;(A)6 (B)7 (C)8 (D)921.以下程序输出结果( )#include int d = 1;fun(int p) static int d
10、= 5; d += p; printf(“ %d”, d); return(d);main( ) int a = 3; printf(“ %dn”, fun(a + fun(d);(A)6 9 9 (B)6 6 9 (C)6 15 15 (D)6 6 1522.已知某一地址段的起始地址为0x8000,定义一char型指针指向该地址,以下真确的是( )(A)char *p = (char *)0x8000; (B)char *p = 0x8000;(C)char *p = (char)0x8000; (D)char *p = 8000;23.某一地址段的起始地址为0x8000,且按4字节对齐,有
11、以下定义char a; int b;b所对应的地址为( )(A)0x8001 (B)0x8002 (C)0x8004 (D)0x80040x800724.定义( )类型的数据可以对地址进行访问(A)整形 (B)字符型 (C)结构体类型 (D)指针类型【ARM开发工具RealView MDK使用入门】一、单项选择题(选择一个正确的答案,将相应的字母填入题内的括号中) 1.RealView工具集中包含两个集成开发工具,它们是( )(A)Microcontroller Development Suite(MDS)和RealView Development Kit(RVDK)(B) Microcont
12、roller Development Kit (MDK) 和RealView Development Kit(RVDK)(C)Microcontroller Development Kit (MDK)和RealView Development Suite(RVDS)(D)Microcontroller Development Suite(MDS) 和RealView Development Suite(RVDS)2.RealView工具集中包含两个集成开发工具,其中( )是为满足基于MCU进行嵌入式软件开发的需求而推出的,它包含强大的设备调试和仿真支持、众多的案例模板和固件实例以及存储优化的R
13、TOS库(A)RVDS (B)MDK (C)RVDK (D)MDS3.RealView MDK中国版包括3个版本,下列( )不属于RealView MDK中国版(A)RealView MDK 升级版 (B)RealView MDK 大众版(C)RealView MDK 企业版 (D)RealView MDK 专业版4.在Windows命令行方式的提示符处键入( )即可调用armcc编译器,编译命令行中必须包含命令和要被编译的源文件名(A)arm 编译 (B)arm c编译 (C)armc (D)armcc5.默认情况下,ARM编译器使用Berkeley UNIX搜索规则对源文件和包含文件进行搜
14、索,可以通过设置环境RVCT31INC来向RVCT提供头文件和源文件的位置,一般不须修改这些环境变量,如果需要包含其他地方的文件,可使用( )编译命令行选项(A)-I和-J (B)-E和-F (C)-G和-H (D)-B和-C6.当使用编译器armcc汇编.s后缀的输入文件或内嵌汇编语言函数时使用( )命令选项,该选项将指定命令行选项传递给汇编器(A)-no_alternative_tokens (B)-Aopt (C)-no_anachronisms (D)-arm7.选择( )启动u Vision 3的调试模式(A)DebugGo (B)DebugStart/Stop Debug Sess
15、ion (C)DebugInline Assembly (D)DebugSetup Logic Analyzer8.在调试模式下,可在( )中定义程序执行和停止的条件(A)代码统计对话框 (B)内存窗口 (C)串行窗口 (D)断点对话框9.u Vision 3 可仿真I/O输入的行为,若一个I/O引脚被配置为计数器输入,每当该引脚被选中时,计数器的值会( )(A)递减 (B)随机变化 (C)递增 (D)保持不变10.ADS1.2下编译出来的映像可以在RealView MDK下调试,( )文件可直接在RealView MDK下调试,工程目录和编译时一致的话,可在源文件级别调试( )文件,只在转换
16、成( )文件后才能够调试,且只能在汇编状态下调试(A)*.axf, *.hex ,*.bin (B)*.axf,*.bin,*.hex(C)*.bin,*.axf, *.hex (D)*.hex ,*.axf,*.bin11.RealView MDK 在软件仿真调试时,仿真器不确定内存的访问属性,可通过( )设置这段区域的读/写属性(A)map命令 (B)读命令 (C)写命令 (D)读/写命令12.RealView MDK 在软件仿真调试时,出现了在内存对话框中不能写数据的情况,可通过( )解决(A)用map命令把此区域的内存映射为可读/写的(B)用read命令把此区域的内存映射为可读/写的(
17、C)用map命令把此区域的内存映射为可写的(D)用read命令把此区域的内存映射为可写的13.JLINK驱动的名称是( )(A)JLinkARM_V420n.exe (B)JLinkARM_W420n.exe(C)JLinkARM_M420n.exe (D)JLinkARM_N420n.exe14.在调试程序之前,需要在ProjectOptions for Target对话框的选项Debug里选( )(A)J-LINK/J-Trace (B)Cortex-M J-LINK/J-Trace(C)Cortex-M/R J-LINK/J-Trace (D)Cortex-R J-LINK/J-Trac
18、e15.在调试程序之前,需要在ProjectOptions for Target对话框的选项Utilities里选( )(A)Cortex-M J-LINK/J-Trace (B)J-LINK/J-Trace(C)Cortex-R J-LINK/J-Trace (D)Cortex-M/R J-LINK/J-Trace16.u Vision 3 为Flash编程工具提供了一个命令接口,在ProjectOption for Target 对话框的( )页中可配置Flash 编程器(A)Target (B)Utilities (C)Output (D)Debug17.与微控制器总线系统相连的Flas
19、h需要进行( ),该配置可通过写存储器的预定义函数实现(A)软件控制 (B)线路控制 (C)软件控制 (D)总线控制18.在Flash初始化文件中可以加载附加程序,附加程序在ProjectOption对话框的( )页中指定(A)Debug (B)Target (C)Utilities (D)Output19.下列关于分散加载描述文件*.sct,说法错误的是( )(A)用于调试/烧写前的目标系统初始化(B)它是用来告诉链接器如何进行目标代码链接和定位的(C)它是解决程序在哪里执行以及如何存放的问题(D)编译工程时使用20.下列关于分散加载描述文件*.sct,说法正确的是( )(A)编译工程时不使
20、用(B)连接目标系统进行调试时需要(C)它是用于调试/烧写前的目标系统初始化(D)它是解决程序在哪里执行以及如何存放的问题21.下列关于命令脚本文件*.ini的说法正确的是( )(A)它是用来告诉链接器如何进行目标代码链接和定位的(B)它是解决程序在哪里执行以及如何存放的问题(C)它是用于调试/烧写前的目标系统初始化(D)编译工程时使用22.在u Vision IDE 中,可以在调试命令行输入( )来显示虚拟寄存器VTREGs(A)READ VTRGE (B)READ VTRGEs (C)DIR VTRGEs (D)DIR VTRGE23.虚拟寄存器是RealView MDK 留给用户向( )
21、输入CPU控制信号的(A)编译器 (B)调试器 (C)链接器 (D)仿真器24.虚拟寄存器是RealView MDK 留给用户向调试器输入( )的(A)CPU调节信号 (B)输出控制信号 (C)CPU控制信号 (D)调节信号25.RealView MDK通过使用( )的fromelf.exe工具进行转换,生成bin文件(A)RVCT (B)RVT (C)RVET (D)RVFT26.RealView MDK通过使用RVCT的( )工具进行转换,生成bin文件(A)fromelf.exe (B)form.exe (C)forelf.exe (D)formelf.exe27.要在RealView
22、MDK中烧写bin文件,需要先将*.bin格式的文件转换成( )格式的文件,在转换的过程中一定要保证地址正确,否则将导致烧写不成功(A)*.sct (B)*.hex (C)*.ini (D)*.hax28.在RealView MDK中添加自己的Flash编程算法时,在对话框( )中将所有的输出文件名替换为新的设备名(A)ProjectOptions for TargetTarget(B)ProjectOptions for TargetDebug(C)ProjectOptions for TargetListing(D)ProjectOptions for TargetOutput29.在Re
23、alView MDK中添加自己的Flash编程算法时,在文件( )中的struct FlashDevice中定义设备参数(A)FlashDev.H (B)FlashDev.C(C)FlashDev.CPP (D)FlashDev.S30.在RealView MDK中添加自己的Flash编程算法时,在文件FlashDev.C中的struct FlashDevice中定义设备参数(A)struct FlashDevice (B)FlashDevice (C)build FlashDevice (D)Correct FlashDevice【ARM处理器STM32F107应用开发】一、单项选择题(选择
24、一个正确的答案,将相应的字母填入题内的括号中) 1.在GPIO控制LED电路设计时,要使最大输出速度为10MHz,输出模式位MODE1:0应该设置为( )(A)00 (B)01 (C)10 (D)112.在GPIO控制LED电路设计时,要使最大输出速度为2MHz,输出模式位MODE1:0应该设置为( )(A)00 (B)01 (C)10 (D)113.在GPIO控制LED电路设计时,GPIO_Configuration函数负责配置GPIO端口,其中( )数据结构包含所有的GPIO端口配置所需各项,函数GPIO_Init则实现某个端口的配置(A)GPIO_Structure (B)GPIO_In
25、it (C)GPIO_InitStructure (D)GPIO_Build4.STM32固件库允许任何外设在用户的应用程序中被使用, 每个外设驱动包含了所有外设了一些函数, 每个驱动的发展是由( )驱动的,它标准化了驱动结构,功能和参数名称(A)通用GPI (B)通用API (C)通用AFI (D)通用GPIO5.在运用 STM32固件库进行调试时,当把程序烧进板里,按一下板上的( ),就可以运行程序了(A)复位键 (B)置位键 (C)KEY按钮 (D)调试按钮6.在运用 STM32固件库进行调试时,为了使用调试模式,首先需要把( )文件加入到您的工程中(A)firmware (B)lib.
26、c (C)lib_dbg.c (D)stm32f10x_conf.h7.要使输入模式为模拟输入模式,端口配置低寄存器(GPIOx_CRL) (x=A.E)的(MODE1:0应该等于( )(A)00 (B)01 (C)10 (D)118.要使输出模式为通用开漏输出模式,端口配置低寄存器(GPIOx_CRL) (x=A.E)的(MODE1:0应该等于( )(A)00 (B)01 (C)10 (D)119.要使输入模式为模拟输入模式,端口配置高寄存器(GPIOx_CRL) (x=A.E)的(MODE1:0应该等于( )(A)00 (B)01 (C)10 (D)1110.端口输入数据寄存器的地址偏移是
27、( )(A)0x08 (B)0404 (C)0x04 (D)0x0011.端口输入数据寄存器的复位值是( )(A)0x0000 0000 (B)0x0000 XXXX (C)H (D)H12.端口输入数据寄存器的位( ),是保留,始终读到0的(A)32:17 (B)31:16 (C)16:1 (D)15:013.端口输出数据寄存器的地址偏移是( )(A)04H (B)00H (C)0CH (D)08H14.端口输出数据寄存器的复位值是( )(A)H (B)H (C)H (D)0x0000 000015.端口输出数据寄存器的位( ),是保留,始终读到0的(A)32:17 (B)31:16 (C)
28、16:1 (D)15:016.端口位置位/复位寄存器的地址偏移是( )(A)10H (B)14H (C)0CH (D)08H17.端口位置位/复位寄存器的复位值是( )(A)H (B)H (C)H (D)0x0000 000018.下列关于端口位置位/复位寄存器的位31:16的说法错误的( )(A)这些位是只写的(B)只能以字的方式访问(C)0是相关的ODRx位上没有动作(D)如果BSx和BRx被置位的话,BRx有优先级19.端口位复位寄存器的地址偏移是( )(A)10H (B)14H (C)0CH (D)08H20.端口位复位寄存器的复位值是( )(A)H (B)H (C)H (D)0x00
29、00 000021.端口位复位寄存器的位( ),是保留的(A)32:17 (B)31:16 (C)16:1 (D)15:022.端口配置锁定寄存器的位( ),是保留的(A)32:16 (B)31:17 (C)32:17 (D)15:023.下列关于端口配置锁定寄存器的位16的说法错误的是( )(A)1代表端口配置锁键被激活,GPIO_LCKR寄存器在MCU发生置位时被锁定(B)该位可以在任何时候被读(C)它仅能使用锁键写序列来修改(D)0代表端口配置锁键未被激活24.下列关于端口配置锁定寄存器的位15:0的说法错误的是( )(A)这些位可读写(B)仅当LCKK位为1时才能够写(C)0代表端口配
30、置未被锁定(D)1代表端口配置被锁定25.STM32F107系列外部中断/事件控制器由( )个产生事件/中断请求的边沿检测器组成(A)18 (B)19 (C)20 (D)2126.EXTI每条输入线( )(A)只能配置成上升沿触发模式 (B)只能配置成下降沿触发模式(C)或者是上升沿或者是下降沿 (D)任意27.要产生一个中断至少为中断源( )(A)配置该EXTI输入线的触发模式(B)正确地设置EXTI中断屏蔽器(C)A和B(D)以上都不对28.SysTick定时器的中断号是( )(A)4 (B)5 (C)6 (D)7 29.SysTick定时器校正值为( )(A)9000 (B)10000
31、(C)12000 (D)1500030.已知STM32F107的部分代码如下:#define SystemFrequency 省略部分代码 if (SysTick_Config(SystemFrequency / 10000) /* Capture error */ while (1); 则可以得知该部分代码的用意是设置系统时钟的间隔为( )(A)10ms (B)1ms (C)0.1ms (D)0.01ms31.IRQ通道配置不包括( )(A)中断优先级设置(B)IRQ通道的选择(C)IRQ中断触发的模式(D)IRQ通道屏蔽器的设置32.要配置GPIO上的事件/中断,必须先使能( )(A)对应
32、的GPIO时钟 (B)AF_IO时钟 (C)A和B (D)以上都不对33.IRQ的部分配置代码如下:/* Connect Button EXTI Line to Button GPIO Pin */ GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_Pin_9); /* Configure Button EXTI line */ EXTI_InitStructure.EXTI_Line =EXTI_Line9; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; if(Button != Butto
33、n_WAKEUP) EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; else EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);则配置的IRQ通道为( )(A)EXTI线8 (B)EXTI线9 (C)EXTI线10 (D)EXTI线1134.STM32F107中断屏蔽器以( )操作(A)字 (B)半字 (C)字节 (D)都可以35
34、.STM32F107中断屏蔽器( )(A)只能读不能写 (B)只能写不能读 (C)既能读又能写 (D)根据设置而定36.STM32F107中断屏蔽器的功能是( )(A)只能屏蔽某个通道线的中断(B)只能开启某个通道线的中断(C)屏蔽或开启某个通道线的中断(D)以上都不对37.STM32F107事件屏蔽器以( )操作(A)字 (B)半字 (C)字节 (D)都可以38.STM32F107事件屏蔽器( )(A)只能读不能写 (B)只能写不能读 (C)既能读又能写 (D)根据设置而定39.STM32F107事件屏蔽器的功能是( )(A)只能屏蔽某个通道线的中断(B)只能开启某个通道线的中断(C)屏蔽或开启某个通道线的中断(D)以上都不对40.STM32F107上升沿触发选择寄存器以( )操作(A)字 (B)半字 (C)字节 (D)都可以41.STM32F107上升沿触发选择寄存器( )(A)只能读不能写 (B)只能写不能读 (C)既能读又能写 (D)根据设置而定42.关于STM32F107上升沿触发选择寄存器说法错误的是( )(A)某位为零代表禁止输入线上的上升沿触发(中断和事件)(B)某位为一代表输入输入线上的上升沿触发(中断和事件)(C)允许中断请求信号有毛刺的存在(D)复位值为0x43.STM32F107下降沿触发选