1. 关于Cortex-M处理器的基本特性,下列描述错误的是? (D)
      • 解析: Cortex-M是32位处理器,但除了能处理32位的字(word),它还能高效处理8位的字节(byte)和16位的半字(half-word)。选项D描述不全面,是错误的。
  1. Cortex-M4处理器默认采用的数据存储顺序是? (B)
      • 解析: 根据笔记,Cortex-M4采用小端模式(Little-Endian)。即一个多字节数据(如word)的低位字节存放在较低的内存地址处。
  1. 在Cortex-M中,为了保证数据访问效率,一个半字(Half-word)变量的存放地址应该是? (B)
      • 解析: Cortex-M采用对齐传输方式以提高效率。字节可以存放在任意地址,半字(16位=2字节)地址应为2的整数倍,字(32位=4字节)地址应为4的整数倍。
  1. Cortex-M3/M4处理器的指令流水线是几级? (B)
      • 解析: 根据笔记,Cortex-M3/M4具有三级流水线,分别是取指、译码、执行。
  1. Cortex-M处理器支持的Thumb-2指令集,其指令长度是? (C)
      • 解析: Thumb-2指令集的一大特点是它混合了16位和32位指令,兼顾了传统Thumb指令的高代码密度和ARM指令的高性能。
  1. 在GPIO的复位状态上,Cortex-M与8051的主要区别是? (C)
      • 解析: 根据笔记对比,Cortex-M的I/O口在复位时通常为高阻态(输入模式),而8051的I/O口复位后为高电平(P1/P2/P3)或需要上拉(P0)。
  1. Cortex-M处理器采用了哪种计算机体系结构? (B)
      • 解析: Cortex-M采用的是改进型哈佛结构。它有独立的指令总线和数据总线,可以同时取指和读写数据,提高了性能,但地址空间是统一的。
  1. 关于Cortex-M的通用寄存器,下列描述正确的是? (D)
      • 解析: R0-R7被称为低寄存器,R8-R12被称为高寄存器。一些紧凑的16位Thumb指令只能访问低寄存器R0-R7。
  1. 在Cortex-M处理器中,R13寄存器的专用功能是? (C)
      • 解析: R13被用作栈指针(Stack Pointer, SP),用于PUSH和POP等堆栈操作。
  1. 在未使用操作系统的情况下,Cortex-M处理器通常使用哪个栈指针? (A)
      • 解析: Cortex-M有两个栈指针,主栈指针(Main Stack Pointer, MSP)和进程栈指针(Process Stack Pointer, PSP)。MSP是默认使用的,用于处理异常和主程序;PSP通常在操作系统的任务上下文中使用。
  1. 当Cortex-M处理器执行一个函数或子程序调用指令(如BL)时,返回地址会自动保存在哪个寄存器中? (B)
      • 解析: R14被用作链接寄存器(Link Register, LR),在执行函数调用指令时,硬件会自动将下一条指令的地址(即返回地址)存入LR。
  1. 关于Cortex-M中的程序计数器PC (R15),下列说法与8051相比最显著的区别是? (C)
      • 解析: 8051的PC用户不可直接访问。而Cortex-M的PC (R15) 是可以被程序直接读写的,向PC写数据会直接引起程序跳转。
  1. 在Cortex-M中,读取PC寄存器的值,得到的是? (C)
      • 解析: 由于三级流水线的存在,当读取PC时,取指部件已经预取了指令。因此,读PC返回的值是当前正在执行指令的地址+4。
  1. Cortex-M的程序状态寄存器xPSR不包含哪个部分? (D)
      • 解析: xPSR是三个状态寄存器的组合视图,包括APSR(应用)、IPSR(中断)和EPSR(执行)。没有DPSR(数据PSR)这个部分。
  1. APSR中的哪个标志位用于指示ALU运算结果为负数? (C)
      • 解析: N (Negative) 标志位。如果算术逻辑单元(ALU)的运算结果的最高位为1,则N位置1,表示结果为负数(在有符号数运算中)。
  1. 在Cortex-M中,哪个寄存器保存了当前正在服务的中断号? (B)
      • 解析: IPSR (Interrupt PSR) 的低位部分用于存放当前激活的异常或中断的编号。
  1. EPSR中的T位如果被清零,将会发生什么? (C)
      • 解析: T位必须始终为1,以指示处理器处于Thumb状态。任何试图清除该位的操作(例如通过MSR指令)都会导致一个用法错误异常(Usage Fault)。
  1. Cortex-M的堆栈模型是? (D)
      • 解析: Cortex-M使用“向下生长的满栈”模型。向下生长意味着每次压栈,地址会减小;满栈意味着SP总是指向最后一个被压入堆栈的有效数据。
  1. 在Cortex-M的堆栈操作中,执行一次PUSH操作,SP指针会如何变化? (D)
      • 解析: 因为是向下生长的满栈,所以在压入一个32位数时,SP会先自减4(为新数据腾出空间),然后再将数据存入SP指向的新地址。
  1. 由于对齐要求,Cortex-M的堆栈指针SP的最低两位永远是? (A)
      • 解析: 堆栈操作是基于32位(4字节)的,所以SP指针必须始终对齐到4字节边界。这意味着SP的值永远是4的倍数,其二进制表示的最低两位永远是00。
  1. Cortex-M的存储器映像中,通常用于存放程序的区域是? (C)
      • 解析: 4GB的存储空间被划分为不同区域,地址较低的CODE区通常被设计用来存放程序代码(通常是Flash)。
  1. Cortex-M的存储器保护单元(MPU)的主要作用是? (B)
      • 解析: MPU可以定义存储器区域的访问权限(如只读、可读写、禁止执行等),用于保护关键数据和代码,防止程序意外地破坏系统,在RTOS中尤为重要。
  1. Cortex-M处理器复位后,首先执行的操作是? (C)
      • 解析: 根据复位流程,处理器复位后,硬件会首先从地址0x00000000处读取一个32位数,并将其加载到主堆栈指针MSP中。
  1. Cortex-M的向量表中,每个向量(地址)占多少位? (C)
      • 解析: 向量表是一个存放地址的数组,每个地址都是32位的,指向对应的异常或中断服务程序的入口。
  1. 向量表中的异常服务例程地址,其最低位必须为1,这是为了指示什么? (C)
      • 解析: Cortex-M只支持Thumb状态。地址的最低位(LSB)被用作标志位,如果为1,表示目标地址的代码是Thumb指令。这个机制保证了在异常跳转时处理器能保持在正确的Thumb状态。
  1. 嵌套向量中断控制器(NVIC)不具备以下哪个功能? (D)
      • 解析: NVIC是中断控制器,负责中断的使能、屏蔽、优先级管理和仲裁,但它不执行具体的运算任务,运算是由CPU核心完成的。
  1. 在NVIC中,如果两个中断的抢占优先级相同,响应优先级不同,当它们同时到达时,CPU会如何响应? (B)
      • 解析: 当抢占优先级相同时,它们不能相互打断。此时由响应优先级(也称亚优先级或子优先级)决定响应顺序,响应优先级编号较小(即优先级较高)的那个中断会先被响应。
  1. 在NVIC的优先级设置中,数值与其优先级的关系是? (B)
      • 解析: Cortex-M的优先级编号越小,代表其优先级越高。例如,优先级0高于优先级1。
  1. 在Cortex-M中,下列哪个属于内核异常,而不是外部中断(IRQ)? (C)
      • 解析: SysTick定时器是集成在Cortex-M内核中的一个标准部件,其产生的中断属于系统异常,而不是由芯片制造商添加的外设中断(IRQ)。
  1. Cortex-M发生中断响应时,硬件自动压栈的寄存器不包括? (C)
      • 解析: 硬件会自动将R0-R3, R12, LR, PC, xPSR这8个寄存器压栈。SP(R13)是用来执行压栈操作的指针,它自身的值会被更新,但不会被压入自己所指向的堆栈中。
  1. MOV R0, R1 指令在Cortex-M和8051中的可用性是? (C)
      • 解析: Cortex-M是RISC架构,具有丰富的通用寄存器,允许在寄存器之间直接传送数据。而8051是CISC架构,大部分操作需要通过累加器A中转,不允许直接在两个通用寄存器(如R0和R1)之间传送数据。
  1. 要将一个32位的立即数加载到寄存器R0,通常需要哪两条指令配合使用? (C)
      • 解析: 由于Thumb-2指令最长为32位,无法在一条指令中同时放下操作码和一个32位的立即数。因此,通常使用MOVW(Move Wide)加载低16位,再用MOVT(Move Top)加载高16位。
  1. 指令 MVN R0, R1 的功能是? (B)
      • 解析: MVN(Move Not)指令会将源操作数(R1)按位取反(求二进制反码),然后将结果传送到目标寄存器(R0)。
  1. 要从内存地址 [R1] 处读取一个无符号字节(8位)到R0,应使用哪条指令? (C)
      • 解析: LDR系列指令用于从内存加载数据。后缀B表示Byte(字节),H表示Half-word(半字)。无S表示无符号。因此LDRB是正确的。
  1. 指令 LDR R0, [R1, #4]! 的功能描述,正确的是? (C)
      • 解析: 这是立即数偏移(前序)寻址,并带有写回。[R1, #4]表示访问地址是R1+4。!后缀表示在操作完成后,要将计算出的新地址R1+4写回到R1寄存器中。
  1. STMIA R0!, {R1-R3} 这条指令属于哪种操作? (D)
      • 解析: STM表示Store Multiple(多重存储)。IA表示Increase After(事后地址递增)。这条指令将寄存器列表{R1-R3}中的内容依次存入以R0为基址的内存中。
  1. STMIA R0!, {R1-R3} 指令执行后,R0的值会如何变化? (D)
      • 解析: R1-R3共包含3个32位寄存器。IA表示事后地址增加,!表示写回。每存储一个32位寄存器,地址增加4。存储3个寄存器后,地址共增加 3 * 4 = 12
  1. 指令 B.EQ Label 的含义是? (B)
      • 解析: B是跳转指令。后缀.EQ(Equal)是条件码,它检查APSR中的Z(零)标志位。如果Z=1(表示前一条比较或算术指令结果为零),则执行跳转。
  1. 要实现 if (R0 == R1) R2 = R3; 这样的条件执行,可以使用哪条指令? (B)
      • 解析: 首先使用CMP R0, R1指令比较两个寄存器的值,该指令会根据比较结果更新APSR标志位(如果R0==R1,则Z=1)。然后使用带.EQ条件码的MOV指令MOVEQ R2, R3,该指令仅在Z=1时执行。
  1. Cortex-M的位段操作(Bit-banding)提供了一种什么性质的操作? (B)
      • 解析: 位段操作的最大优点是它是一个“原子操作”。这意味着对单个位的读-修改-写操作是在一个总线周期内完成的,不会被其他总线主设备(如DMA)或中断打断,保证了位操作的完整性。
  1. STM32F4系列MCU中,配置GPIO端口方向模式的寄存器是? (C)
      • 解析: GPIOx_MODER (GPIO port mode register) 用于配置每个引脚的工作模式,如输入、通用输出、复用功能或模拟模式。
  1. 要快速地将GPIOx端口的第5位置1,同时不影响其他位,最高效的操作是写入哪个寄存器? (B)
      • 解析: GPIOx_BSRR (GPIO port bit set/reset register) 提供了对端口位的原子置位和复位操作。向该寄存器的低16位(BS0-BS15)中的某一位写1,会原子地将对应的端口位置1,而不影响其他位,无需读-修改-写操作。
  1. GPIOx_BSRR寄存器中,要对端口的第n位进行复位(清零),应该怎么做? (C)
      • 解析: BSRR寄存器的高16位(BR0-BR15)用于复位。向BRn位写1,即可将对应的端口Pxn清零。
  1. 以下哪个定时器是STM32F4系列中的高级控制定时器? (C)
      • 解析: 根据笔记,TIM1和TIM8是高级控制定时器,功能最为强大,通常带有刹车输入、死区控制等功能,适用于电机控制。
  1. 在STM32的定时器中,用于设置PWM占空比的寄存器是? (C)
      • 解析: PWM的占空比是通过比较计数器的当前值(CNT)和捕获/比较寄存器(CCR)的值来决定的。通过改变CCR的值就可以改变PWM的占空比。ARR决定周期,PSC决定计数频率。
  1. 要实现无需CPU干预的内存与外设之间的数据传输,应使用哪个外设? (C)
      • 解析: DMA (Direct Memory Access) 控制器就是为此设计的。它可以接管总线,在外设和内存之间直接传输数据,从而将CPU解放出来执行其他任务。
  1. 在C语言中,使用结构体指针来访问外设寄存器有什么优点? (C)
      • 解析: 将一个外设的所有相关寄存器定义在一个结构体中,然后将一个指向该外设基地址的结构体指针进行强制类型转换,就可以通过结构体成员名来访问各个寄存器。这使得代码逻辑清晰,易于理解和维护。
  1. 在Cortex-M处理器中,执行 BX LR 指令通常用于什么目的? (A)
      • 解析: BX(Branch and Exchange)指令会跳转到寄存器中给出的地址,并根据地址最低位切换状态(在此处保持Thumb状态)。由于LR中保存了函数调用的返回地址,因此BX LR是标准的从函数返回的指令。
  1. Cortex-M的位段别名区(Bit-band Alias)的大小是多少? (C)
      • 解析: 1MB的位段区中的每一位,在32MB的位段别名区中都有一个对应的字地址。因此别名区的大小是32MB。
  1. 如果要将R1左移2位后作为偏移量,与基址R2相加,从结果地址处加载一个字到R0,应该使用哪条指令? (A)
      • 解析: 这是典型的寄存器偏移寻址模式。LDR R0, [R2, R1, LSL #2]完整地描述了这个操作:基址在R2,偏移量是R1逻辑左移2位(LSL #2),从R2 + (R1 << 2)地址处加载数据到R0。
Loading...
Z_cosy
Z_cosy
浙江大学电气工程学院本科生
公告
🎉Welcome to Z-cosy🎉
-- 食用指南 ---
目前只有课程笔记以及电控学习笔记
陆续会整理更多内容!