网络知识 娱乐 嵌入式软件工程师 常用知识点(STM32部分)(包含面试题)

嵌入式软件工程师 常用知识点(STM32部分)(包含面试题)

嵌入式软件工程师 常用知识点(STM32部分)(包含面试题)


博主2022届 本二毕业
小厂 12~15x14薪酬

文章目录

  • 嵌入式软件工程师 常用知识点(STM32部分)(包含面试题)
  • 前言
  • 一、嵌入式(位操作)
    • 1、给定一个整型变量a,设置a的bit 3,清除a 的bit 3
    • 2、已知有一个int型大小的内存及其地址,如何向该地址存入数据 内存,
  • 二、编译原理
    • 1、Gcc编译的C语言程序占用的内存分为哪几个部分?
  • 三、STM32资料
    • 1、常用选择题
  • 四、填空
  • 五、简答题
    • 1、什么是嵌入式系统?嵌入式系统一般由哪几部分构成?
    • 2、STM32共有那几种基本时钟信号?
    • 3、串口数据接收是怎么处理的?
    • 4、简述嵌套向量中断控制器(NVIC)的主要特性。
    • 5、DMA有什么用?
    • 6、如果单片机ADC输入口电压为1V,则采样得到的值是多少?
    • 7、同步通信和异步通信有什么区别?UART、SPI和I2C分别属于什么类型的通信方式?
    • 8、简述通过I2C接口读取设备X的寄存器Y的值的过程
    • 9、中断是什么?请简述单片机中断处理的过程
    • 10、相比于正常子函数,中断服务函数有什么特点和需要注意的地方?
  • 六、操作系统
    • 1.简述一下什么是RTOS系统
    • 2.在任务中怎么进行数据传输?什么方式?
    • 3.阐述信号量的作用,信号量的类型
    • 4.FreeRTOS有多少个优先级?任务优先级和系统优先级是什么关系?
    • 5.如何处理优先级反转问题?


前言

提示:此攻略应付500人以下的STM32的面试题绰绰有余:


一、嵌入式(位操作)

1、给定一个整型变量a,设置a的bit 3,清除a 的bit 3

#define BIT3 (0x1<<3) 
static int a; 
void set_bit3(void) 
{ 
a |= BIT3; 
} 
void clear_bit3(void) 
{ 
a &= ~BIT3; 
} 

原文链接:https://blog.csdn.net/mao_hui_fei/article/details/82710536

2、已知有一个int型大小的内存及其地址,如何向该地址存入数据 内存,

4个字节,32位 0x3a47ba14;

#include "stdio.h"
int main()
{
    
    int *p=(int *)0x3a47ba14;    // 地址
    *p=10
    printf("%d,0x%x",*p,p);// 输出地址的信息

    return 0;
}

二、编译原理

1、Gcc编译的C语言程序占用的内存分为哪几个部分?

栈区(stack)存放函数的参数、局部变量
堆区(heap)提供程序员动态申请的内存空间
全局(静态)区(static)存放全局变量和静态变量,初始化不为0的全局变量和静态变量、const型常量在一块区域(.data段),未初始化的、初始化为0的全局变量和静态变量在相邻的另一块区域(.bss段)
程序代码区存放函数体的二进制代码和字符串常量。

三、STM32资料

1、常用选择题

1.Cortex-M处理器采用的架构是( D )

(A)v4T (B)v5TE (C)v6 (D)v7

2.NVIC可用来表示优先权等级的位数可配置为是( D )

(A)2 (B)4 (C)6 (D)8

3.Cortex-M系列正式发布的版本是( A )

(A)Cortex-M3 (B)Cortex-M4 (C)Cortex-M6 (D)Cortex-M8

4.下面是Context-M3处理器代码执行方式的是( A )

(A)特权方式 (B)普通方式 (C)Handle方式 (D)Thread方式

5.下面是Context-M3处理器的工作模式的是( A )

(A)Thread模式 (B)Thumb模式 (C)Thumb-2模式 (D)Debug模式

6.下列是Cortex – M3处理器可以使用的堆栈的栈是( B )

(A)线程栈 (B)进程栈 (C)多线程栈 (D)空栈

10.Cortex – M3的存储格式中专用外设总线区域可以使用( A )

(A)小端格式 (B)大端格式 (C)小端或大端格式 (D)没有正确答案

11.每个通用I/O端口有( )个32位的配置寄存器,( )个32位的数据寄存器,( )个32位的置位/复位寄存器,( )个16位的复位寄存器,(B )个32位的锁定寄存器

(A)2,1,2,1,1 (B)2,2,1,1,1 (C)2,2,2,1,1 (D)2,2,1,2,1

12.( A )寄存器的目的就是用来允许对GPIO寄存器进行原子的读/修改操作

(A)GPIOX_BSRR和GPIOX_BRR (B)GPIOX_CRL和GPIOX_CRH(C)GPIOX_BSRR和GPIOX_LCKR (D)GPIOX_IDR和GPIOX_ODR

13.所有的GPIO引脚有一个内部微弱的上拉和下拉,当它们被配置为( A )时可以是激活的或者非激活的

(A)输入 (B)输出(C)推挽 (D)开漏

14.端口输入数据寄存器的地址偏移为( B )

(A)00H (B)08H (C)0CH (D)04H

16.端口输出数据寄存器的地址偏移为( C )

(A)00H (B)08H (C)0CH (D)04H

17.每个I/O端口位可以自由的编程,尽管I/O端口寄存器必须以( D )的方式访问

(A)16位字 (B)16位字节 (C)32位字节 (D)32位字
22.向量中断控制器最多可支持( C )个IRQ中断

(A)127 (B)128 (C)240 (D)255

23.系统控制寄存器 NVIC 和处理器内核接口紧密耦合,主要目的是(C )

(A)结构更紧凑,减小芯片的尺寸

(B)连接更可靠,减小出错的概率

(C)减小延时,高效处理 最近发生的中断

(D)无所谓,没有特别的意思,远一点也没有关系

24.关于中断嵌套说法正确的是( B )

(A)只要响应优先级不一样就有可能发生中断嵌套

(B)只要抢占式优先级不一样就有可能发生中断嵌套

(C)只有抢占式优先级和响应优先级都不一才有可能发生中断嵌套

(D)以上说法都不对
26.中断屏蔽器能屏蔽( B )

(A)所有中断和异常 (B)除了NMI外所有异常和中断

(C)除了NMI、异常所有其他中断 (D)部分中断

27.PWM是( A )

28.(A)脉冲宽度调制 (B)脉冲频率调制 (C)脉冲幅度调制 (D)脉冲位置调制

29.要想使能自动重装载的预装载寄存器需通过设置TIMx_CR1寄存器的( B )位

(A)UIF (B)ARPE (C)UG (D)URS

30.以下对于STM32 ADC描述正确的是(A )

(A)STM32 ADC是一个12位连续近似模拟到数字的转换器

(B)STM32 ADC是一个8位连续近似模拟到数字的转换器

(C)STM32 ADC是一个12位连续近似数字到模拟的转换器

(D)STM32 ADC是一个8位连续近似数字到模拟的转换器

31.ADC转换过程不含哪项( D )

(A)采样 (B)量化 (C)编码 (D)逆采样

32.ADC转换过程正确的是( A )

(A)采样—量化—编码(B)量化—采样—编码

(C)采样—编码—量化(D)编码—采样—量化

33.下列哪项不是ADC转换器的主要技术指标( B )

(A)分辨率 (B)频率 (C)转换速率 (D)量化误差
37. 以下为 GPIO 端口配置寄存器的描述,在 GPIO 控制 LED 电路设计时,要使最大输出速度为 2MHz ,应该设置 MODE[1:0] 值为( C )
( A ) 00 ( B ) 01
(C)10 (D) 11

50.DMA控制器可编程的数据传输数目最大为( A )。

A.65536 B.65535

C.1024 D.4096

51.STM32中,1个DMA请求占用至少(B )个周期的CPU访问系统总线时间。

A.1 B.2

C.3 D.4

52.STM32的USART根据( A)寄存器M位的状态,来选择发送8位或者9位的数据字。

A.USART_CR1 B.USART_CR2

C.USART_BRR D.USART_CR3

53.下面不属于STM32的bxCAN的主要工作模式为(C )。

A.初始化模式 B.正常模式

C.环回模式 D.睡眠模式

54.和PC系统机相比嵌入式系统不具备以下哪个特点( C )。

A、系统内核小 B、专用性强

C、可执行多任务 D、系统精简

55.嵌入式系统有硬件和软件部分构成,以下( C)不属于嵌入式系统软件。

A. 系统软件 B.驱动 C. FPGA编程软件 D.嵌入式中间件
61.ARM Cortex-M3不可以通过(D )唤醒CPU。

A.I/O端口 B.RTC闹钟

C.USB唤醒事件 D.PLL

62.STM32嵌套向量中断控制器(NVIC)具有( A) 个可编程的优先等级。

A.16 B.43

C.72 D.36

64.STM32的外部中断/事件控制器(EXTI)支持(C )个中断/事件请求。

A.16 B.43

C.19 D.36

65.STM32的USART根据(A )寄存器M位的状态,来选择发送8位或者9位的数据字。

A.USART_CR1 B.USART_CR2

C.USART_BRR D.USART_CR3

66.DMA控制器可编程的数据传输数目最大为(A)。

A.65536 B.65535

C.1024 D.4096

67.每个DMA通道具有(A )个事件标志。

A.3 B.4

C.5 D.6

68.STM32中,1个DMA请求占用至少( B)个周期的CPU访问系统总线时间。

A.1 B.2

C.3 D.4

四、填空

1.STM32的所有端口都有 外部中断能力。当使用 外部中断线 时,相应的引脚必须配置成 输入模式

2.STM32具有单独的位设置或位清除能力。这是通过 GPIOX_BSRRGPIOX_BRR 寄存器来实现的。

3.当STM32复位后, HSL振荡器 将被选为系统时钟。当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止 。

只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL稳定),才可以从一个时钟源切换到另一个时钟源。在被选择时钟源没有就绪时,系统时钟的切换不会发生。

五、简答题

1、什么是嵌入式系统?嵌入式系统一般由哪几部分构成?

嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,
由硬件层、中间层、系统软件层和应用软件层组成。
硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。

硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board
Support
Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP
层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。

BSP具有以下两个特点: 硬件相关性:因为 嵌入式实时系统的 硬件环境具有应用相关性,而作为上层软 件与硬件平台之间的接口,BSP需要为
操作系统提供操作和控制具体硬件的方法。 操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。
BSP的另一个主要功能是硬件相关的设备驱动。硬件相关的设备驱动程序的初始化通常是一个从高到低的过程。尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由BSP将他们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。与硬件相关的驱动程序是BSP设计与开发中另一个非常关键的环节。

系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。

2、STM32共有那几种基本时钟信号?

在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。
①、HSI是高速内部时钟,RC振荡器,频率为8MHz。
②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
③、LSI是低速内部时钟,RC振荡器,频率为40kHz。
④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

3、串口数据接收是怎么处理的?

串口数据处理有两种方式:

1.通过串口中断接收到数据后,将数据放置环形缓存或队列中,待数据处理函数进行处理时进行处理。(RTOS)

2.通过轮询,时间片方式调度串口寄存器判断是否有数据,有数据则放入缓存待处理。(裸机)

4、简述嵌套向量中断控制器(NVIC)的主要特性。

级别关系是: 抢占式优先级 > 响应优先级 > 中断表中的排位顺序。只有在上一级优先级相同时下一级优先级才会起作用。

5、DMA有什么用?

直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。

有多少个DMA资源?

   有两个DMA控制器,DMA1有7个通道,DMA2有5个通道。

数据从什么地方送到什么地方?

   外设到SRAM(I2C/UART等获取数据并送入SRAM);

   SRAM的两个区域之间;

   外设到外设(ADC读取数据后送到TIM1控制其产生不同的PWM占空比);

   SRAM到外设(SRAM中预先保存的数据送入DAC产生各种波形);

————————————————
原文链接:https://blog.csdn.net/weixin_28900531/article/details/79565376

6、如果单片机ADC输入口电压为1V,则采样得到的值是多少?

已知单片机内置12位精度的ADC,单片机工作电压3.3V,ADC基准电压3V,请计算ADC采样的电压最小分辨率是多少?如果单片机ADC输入口电压为1V,则采样得到的值是多少?

7、同步通信和异步通信有什么区别?UART、SPI和I2C分别属于什么类型的通信方式?

8、简述通过I2C接口读取设备X的寄存器Y的值的过程

9、中断是什么?请简述单片机中断处理的过程

10、相比于正常子函数,中断服务函数有什么特点和需要注意的地方?

六、操作系统

1.简述一下什么是RTOS系统

FreeRTOS为例,RTOS系统是以抢占优先级为主,时间片为辅实现任务调度的操作系统,主要核心上实现的是任务调度的功能,使任务具有实时性。

2.在任务中怎么进行数据传输?什么方式?

任务间数据传输一共有三种形式,用的最多的是消息队列,其次是全局变量和信号量。

1.消息队列发送数据的方式可以是发送数据本身和发送数据的地址指针。

2.全局变量使用供所有任务获取和处理,但全局变量占用内存较多,而且不好管理。

3.信号量一般作为标志位使用。

3.阐述信号量的作用,信号量的类型

信号量共有三种,二值信号量、计数信号量、互斥信号量,常用的是二值信号量和互斥信号量。

信号量本质上都是深度为1的消息队列。

二值信号量通常在中断中作为标志位使用,起到线程同步的作用。

互斥信号量作为互斥锁使用。防止不同线程访问同个内存。

4.FreeRTOS有多少个优先级?任务优先级和系统优先级是什么关系?

FreeRTOS一共有32个任务优先级,但实际使用的优先级个数通过系统设置使用。

系统优先级NVIC基于RAM架构,优先级最高,是一切中断的基石。任务优先级基于FreeRTOS,和系统优先级无关。

5.如何处理优先级反转问题?

原文链接:https://blog.csdn.net/qq_41273126/article/details/119348161