首页 - 通讯 - 《STM32面试指南:精选题目及答案整理》

《STM32面试指南:精选题目及答案整理》

2023-10-01 11:05

1。嵌入式系统中ROM、RAM、寄存器的概念和作用是什么?

  • ROM为只读存储器,保证断电后数据不丢失。 (硬盘)
  • RAM为随机存储器,断电后数据将丢失。 (记忆)
  • 寄存器是寄存器,用于暂时存储相关指令信息或数据信息的硬件设备。
  • 2。嵌入式中断系统的概念是什么并举例说明终端执行过程?

    机中断是指计算机运行过程中需要主机干预时能够自动停止程序的机器。 。

    3。 STM32的IO可以配置成哪些工作模式?

  • GPIO_Mode_AIN 模拟输入
  • GPIO_Mode_IN_FLOATING 浮动输入
  • GPIO_Mode_IPD 下拉输入
  • GPIO_Mode_IPU上拉输入
  • GPIO_Mode_Out_OD 开漏输出
  • GPIO_Mode_Out_PP推挽输出
  • GPIO_Mode_AF_OD 复用开漏输出
  • GPIO_Mode_AF_PP 多路推挽输出
  • 4。下面介绍一下STM32的启动流程?

  • 设置Boot引脚以查找初始地址
  • 初始化堆栈指针__initial_sp
  • 指向复位程序Reset_Hander
  • 设置异常中断HardFault_Handler
  • 设置系统时钟SystemInit
  • 调用C库函数_main
  • 5.串口通信方式介绍?

  • 同步通讯:I2C半双工、SPI全双工
  • 异步通讯:RS485半双工、RS232全双工
  • 6。串口设置的一般步骤可以概括为以下步骤:

    1. 串口时钟使能、GPIO时钟使能
    2. 串口复位
    3. GPIO口模式设置:TX的GPIO工作模式为:GPIO_Mode_AF_PP; //多路推挽输出。 RX的GPIO工作模式为:GPIO_Mode_IN_FLOATING; //浮动输入。
    4. 串口参数初始化:主要包括:波特率设置(115200)、8位数据位、1位停止位、无奇偶校验位、无硬件数据流控制、收发模式。
    5. 启用中断并初始化NVIC(只有需要启用中断时才需要执行此步骤)
    6. 启用串口
    7. 编写中断处理函数7.

    7.USART主要特点? ?高精度波特率发生器,不占用定时器/计数器;
                          (4) 支持5、6、7、8、9数据位、1或2个停止位的串行数据帧结构;
                  (5) 硬件支持的奇偶校验位生成和验证;滤波器和数字低通滤波器;
    (9) 三个完全独立的中断,TX发送完成,TX发送数据寄存器为空,RX接收完成;
    (10) 支持多机通讯模式;
              (11) 支持双速异步通信模式。

    8. I2C 总线在数据传输过程中共有三种信号?
            (1)启动信号:当SCL为高电平时,SDA从高电平跳变到低电平,开始传输数据。
                (2)结束信号:当SCL为高电平时,SDA从低电平跳变到高电平,结束数据传输。
             (3)响应信号:接收数据的IC收到8bit数据后,向发送数据的IC发送特定的低电平脉冲,表示数据已接收。 CPU向受控单元发送信号后,等待受控单元发送响应信号。 CPU收到响应信号后,根据实际情况判断是否继续发送信号。如果没有收到响应信号,则判断受控单元故障

    9. 如何配置I2C配置主机模式端口?
          硬件模式:复用开漏输出,既不上拉也不下拉。 (快速模式:400 Kbit/s)
    软件模拟:推挽输出,配置上拉电阻。

    10.I2C仲裁机制?
                                                                                                            但遵循“低”的原则levelfirst”,即谁先发送低电平,谁就控制总线。

    11.SPI需要多少根线?

  • SPI接口一般使用4条通讯线:
  • MISO主设备数据输入,从设备数据输出。
  • MOSI 主设备数据输出,从设备数据输入。
  • SCLK时钟信号,由主设备产生。
  • CS 从设备片选信号,受主设备控制。
  • 12.SPI通讯的四种模式?
    SPI 有四种工作模式。每种工作模式的区别在于SCLK不同。具体工作由CPOL和CPHA确定。

    (1)CPOL:(时钟极性),时钟极性:

    SPI的
  • CPOL表示当SCLK空闲时,其电平值为低电平0或高电平1:
  • CPOL=0,空闲时时钟电平为低电平,所以SCLK有效时为高电平,即所谓高电平有效;
  • 1 IyNzc5MC5wbmc=/}

    (2)CPHA:(Clock Phase),时钟相位:
    Phase,对应数据采样在哪一个边沿(edge),无论是第一个边沿还是第二个边沿,0对应第一个边缘,1对应第二条边缘。

  • 对于:CPHA=0,表示第一条边:
  • 对于CPOL=0,idle为低电平,第一个边沿是由低到高,所以是上升沿;
    对于CPOL=1,idle为高电平,第一个边沿由高变低,因此为下降沿;

  • CPHA=1,表示第二条边:
  • 对于CPOL=0,空闲状态为低电平,第二个边沿由高变低,因此为下降沿;
    对于CPOL=1,空闲状态为高电平,第一个边沿由低电平变为高电平,因此为上升沿;

    13. 如何确定使用哪种模式?

  • 首先确认从机所需的SCLK极性,不工作时是低电位还是高电位,从而确认CPOL是0还是1。看原理图,我们设置串口的空闲状态将时钟同步到高电平,因此我们选择 SPI_CPOL_High。即CPOL为1
  • 从从芯片datasheet中的时序图确认从芯片是在SCLK下降沿采集数据还是在SCLK上升沿采集数据。
  • 14。您能总结一下并介绍一下吗?
    CAN 控制器根据 CAN_L 和 CAN_H 上的电位差确定总线电平。总线电平分为显性电平和隐性电平,两者之比为一。发送方通过改变总线电平来将消息发送到接收方。

    15.CAN初始化配置步骤?

  • 配置相关管脚的复用功能并使能CAN时钟
  • 设置CAN工作模式和波特率(CAN初始化环回模式,波特率500Kbps)
  • 设置滤镜
  • 16.CAN发送数据格式?

  • CanTxMsg TxMessage;
  • TxMessage.StdId=0x12; // 标准标识符
  • TxMessage.ExtId=0x12; // 设置扩展标识符
  • TxMessage.IDE=CAN_Id_Standard; // 标准框架
  • TxMessage.RTR=CAN_RTR_Data; // 数据帧
  • TxMessage.DLC=len; // 要发送的数据长度,发送8个字节
  • for(i=0;i
  • www.gsm-guard.net[i]=msg[i]; //数据
  • 17。 DMA简介?
    直接内存访问(DMA)用于在外设与内存之间或内存与内存之间提供高速数据传输。无需CPU干预,数据可以通过DMA快速移动,从而节省CPU资源用于其他操作。

    18.DMA传输模式有几种?

  • DMA_Mode_Circular 循环模式
  • DMA_Mode_Normal 正常缓存模式
  • 应用场景:GPS、蓝牙,均采用循环采集,DMA_Mode_Circular模式。
  • 19。描述一下中断处理过程?
    (1) 初始化中断,设置触发方式为上升沿/下降沿/双边沿触发。
    (2) 触发中断,进入中断服务函数

    20.STM32中断控制器支持多少个外部中断?
    STM32 中断控制器支持 19 个外部中断/事件请求:GPIO 引脚 GPIOx.0~GPIOx.15(x=A、B、C、D、E、F、G)分别对应中断线 0~15。
    另外 4 条 EXTI 线连接如下:

  • EXTI 线路 16 连接到 PVD ​​输出
  • EXTI 线 17 连接到 RTC 报警事件
  • EXTI 线 18 连接到 USB 唤醒事件
  • EXTI 线路 19 连接到以太网唤醒事件(仅适用于连接的产品)
  • 21。中断服务函数列表:
    IO口外部中断在中断向量表中只分配了7个中断向量,即只能使用7个中断服务函数。

  • EXTI0_IRQHandler
  • EXTI1_IRQHandler
  • EXTI2_IRQHandler
  • EXTI3_IRQHandler
  • EXTI4_IRQHandler
  • EXTI9_5_IRQHandler
  • EXTI15_10_IRQHandler
  • 22。 STM32有多少个时钟源?
    STM32有5个时钟源: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。
  • 23。物联网的架构分为几层?每层负责什么功能?
    分为三层。物联网从架构上可以分为感知层、网络层和应用层,

    1. 感知层:负责对象之间的信息采集和信息传递。信息采集技术包括传感器、条形码和二维码、RFID射频技术、音频和视频等多媒体信息。信息传输包括长短距离数据传输技术、自组织组网技术等传感器网络、协同信息处理技术、信息采集中间件技术等。感知层是实现物联网综合感知的核心能力。它是物联网领域急需突破关键技术、标准化和产业化的部分。关键是要有更准确、更全面的传感能力,并解决低功耗、小尺寸等自动化和低成本问题。
    2. 网络层:利用无线和有线网络对采集的数据进行编码、认证和传输。广泛覆盖的移动通信网络是实现物联网的基础设施。它是物联网三层中标准化、产业化程度最高的。最有能力、最成熟的部分关键是优化和完善物联网的应用特性,形成协同感知网络。
    3. 应用层:提供基于物联网的广泛应用是物联网发展的根本目标。物联网技术与行业信息化需求相结合,实现多元化的智能化应用解决方案集,关键在于行业整合和信息资源的开发利用、低成本高质量的解决方案、信息安全的保障和行业的发展。有效的商业模式。

    24。简述一下设置系统时钟的基本过程?

    1. 打开HSE,等待就绪,设置Flash等待操作。
    2. 设置AHB、APB1、APB2分频系数,确定它们各自与系统时钟的关系。
    3. 设置CFGR寄存器决定PLL的时钟源和倍频系数(HSE外部8M*9倍=72MHz)。
    4. 启用 PLL,并将系统时钟源切换到 PLL。

    25。如何以相同的优先级运行两个任务?

                                        在使用共享资源的过程中,可以暂时将获取信号量的任务的优先级提高到比所有任务的最高优先级高一级,这样该任务就不会被其他任务打断,从而使共享资源可以尽快用完并释放信号量,然后释放信号量后,恢复任务原来的优先级。

    26。 Cortex-M3的存储空间可以分为哪些部分,各部分的地址范围是多少?
                                                                                                                             程序存储器、数据存储器、寄存器以及输入输出端口都组​​织在同一个4GB线性地址空间中。 Cortex-M3支持最大存储空间为4GB,但实际STM32有所不同;

    1. 从0xE0000000到0xFFFFFFFF的512MB地址存储空间用于NVIC、MPU和调试组件;
    2. 0xA0000000到0xDFFFFFFF的1GB地址存储空间用于片外外设扩展;
    3. 0x60000000到0x9FFFFFFF的1GB地址存储空间用于扩展片外存储器;
    4. 从0x40000000到0x5FFFFFFFF的512MB地址存储空间用于片上外设;
    5. 从0x20000000到0x3FFFFFFFF的512MB地址存储空间为片内SRAM; STM32F103VET处理器为64kB,起始地址为0x20000000至0x20010000。
    6. 从0x00000000到0x1FFFFFFF的512MB地址存储空间是代码区; STM32F103VET处理器大小为512kB,起始地址为0x80000000至0x1FFFFFFF。

    27。基于CMSIS标准的软件架构分为几层? CMSIS层一般由哪些部分组成?
    基于CMSIS标准的软件架构主要分为以下四层:用户应用层、操作系统层、CMSIS层、硬件寄存器层。 ?提供上层操作系统和应用层的接口,

    28。 DAC有两个寄存器,一个是DHR(Data Holding Register)数据保持寄存器,另一个是DOR(Data Output Register)数据输出寄存器。真正起作用的是DOR寄存器,它将数值赋予数模转换单元,输出以VREF+为参考电压的电压值。如果转换是由硬件触发的,则系统会在 1 个 ABP 时钟周期后将值赋给 DOR。如果转换由软件触发,则时间为3个APB时钟周期。然后,等待 Tsetting 时间(典型为 3us,最大值为 4us)后才实际输出电压值。

    29。下载程序:

  • 一种是ICP(在线编程),适合JTAG或SWD协议下的编程程序。
  • 另一种称为IAP(In-ApplicationProgramming),适合将多种接口(USB、串口、CAN)下载到内存中。 IAP 允许在程序运行时对 FLASH 进行重新编程。
  • 30。内部上拉和下拉电阻设置:

    如果外接按钮的另一端接地,需要设置上拉电阻。 (原因是按钮未按下时,由于上拉,输入为高电平;按下时,由于外部接地,输入为低电平。)同理,若另一端外部按键接高电平,则需要设置为下拉电阻。

    31。串口中断TXE和TC的区别:

    个 其实这是显而易见的。一种是发送寄存器空标志,另一种是发送完成标志。因为串口发送时,首先需要将发送寄存器中的数据移位到移位寄存器(影子寄存器)中,然后串行发送出去。因此,当发送寄存器DR为空时,意味着可能正在向外部发送数据,也可能尚未发送数据。但传输完成情况不同。它是移位寄存器完成本次所有数据移位(即发送停止位)后置位的标志位。看起来是这样的:TXE让程序有更多的时间来填充TDR寄存器,保证发送的数据流不间断。 TC可以让程序知道传输结束的准确时间,这有助于程序控制外部数据流的时序。

    32。定时器中断溢出更新时间:Tout=((arr+1)*(psc+1))/Tclk,ARR为自动加载寄存器(1~65535),PSC为分频系数,TCLK为输入时钟频率(兆赫)。

    33. PWM1 和 PWM2 模式之间的差异仅是 180 度相位。当前者为高电平时,后者为低电平。

    34。定时器输入捕获中有一个过滤器。顾名思义,过滤器起到过滤的作用。捕捉外部信号时,信号可能不稳定。这种情况下需要进行滤波:当检测到外部输入时,如果连续采样N次并确定为高电平/低电平,则会触发响应中断(如果使能)。

    35。常用的汉字内码系统有GB2313、GB13000、GBK、BIG5(繁体中文)等。其中GB2313只有几千个汉字,而GBK有两万多个汉字。