首页 > 编程知识 正文

嵌入式面试笔试题,嵌入式面试的问题

时间:2023-05-03 16:45:05 阅读:158260 作者:4626

2020秋季招聘面试-嵌入式开发面试问题大疆华为

大疆

数据通信协议

常见的有SPII2CUARTCAN等单线收发的通信协议和RS485

总结图有空再补上。

SPI需要几根线?工作原理?

通常需要4条线,分别为主输出从站3358www.Sina.com/、主输入从站输出MOSI、主输出时钟MISO、主输出com

SPI在时钟极性SCK和时钟相位NSS:CPOL为0时,定义SCK怠速状态为低电平; 当CPOL为1时,SCK空闲状态为高电平。 当CHA为0时,用SCK的CPOL进行采样; 在CHA为1的情况下,用SCK的CPHA进行采样。

这样,可以基于CPOL和CPHA的值定义四种执行模式。 一般使用模式0和模式3。

模式CPOLCPHA空闲电平采样沿000低电平上升沿下降沿101低电平下降沿上升沿210高电平下降沿311高电平上升沿下降沿在相应边缘处对电平进行采样,即,将此时的电平作为信号读出并输出(要求信号在此时是稳定的)。

对应数据的变更即触发,在相反的边缘进行。 (注意:模式采样沿指主从输入。)

奇数边沿

UART不是USART,只能通过偶数边沿UART需要几根线,初始化配置需要配置什么?这两条线路进行通信。 通信双方必须使用相同的Rx,将正确电平的信号采样为0/1的信号。 FPGA实现UART的时序图如下所示。

要在STM32中配置UART,请参阅Tx波特率波特率字长,33333333http://

停止位数

少废话直接上图:

分子f是UART的时钟,一般是安装在该UART中的(APB1/APB2 )总线时钟。 USARTDIV是波特率寄存器的校验位:高12位为整数部分,低4位为小数部分。

当然,平时使用库函数配置波特率,库函数会自动计算分频系数。

硬件流控制

正确答案为读写功能时发生中断,发生两个事件时串行端口的对应标志所在,发生对应的中断。 但是,通常也可以通过接收中断、发送轮询的方式进行UART通信,根据需要搭载DMA。 不是很美吗?

UART波特率如何设置?

无符号定点数

串口的接收和发送哪个会触发中断?

中断处理的流程为两个中断更及时还是轮询更及时?中断中断现场保存的过程。、3http://ww/Sina/com

现场保护:发生中断时,将CPU的当前状态,也就是中断的出口程序保存在寄存器中,然后执行中断服务,中断返回时,从寄存器中取出地址并继续执行。 遵守现场的开始,是在不丢失中断前的状态的情况下进行保存。

33559 www.now coder.com/question terminal/2e 85847 c 06684 C2 FAE af 8728 f 72e 5045? toCommentId=426573

请求中断

在函数a调用函数b的情况下,首先在自己的堆栈帧中压入函数的返回地址,然后比特函数b制作新的堆栈帧并压入系统堆栈。

在函数堆栈帧中,首先从右到左依次对参数进行堆栈,然后对返回地址进行堆栈,然后进行堆栈帧的调整。 保存当前堆栈帧的状态值,将当前帧切换到新的堆栈帧,并将其指定给新的堆栈帧

空间。

C程序分段

分为代码段BSS段数据段五个部分:

代码段: 存储二进制指令,通常是一块存储程序执行代码的内存;
BSS段:存放未初始化全局变量静态变量的一块内存;
数据段:存放已初始化全局变量静态变量
自动变量(函数内的局部变量)和数组
:手动申请空间的变量。

全局、静态和自动变量的区别

全局变量是在所有函数体外定义的,在某文件中定义后改文件所有函数都可直接调用,外部文件通过 extern 声明后也可调用,生命周期为定义处至程序结束;

静态变量是用 static 修饰的变量,其生命周期同全局变量一致。在函数内定义的静态变量,在此进入函数时保留前次退出函数时的值;以 static 修饰的全局变量,通常不可被外部文件访问,外部文件若定义一个相同名称的全局变量,这两个变量是不一致的,编译器不会报错。

自动变量是在函数内定义的变量,其生命周期为定义处到本次函数调用结束。自动变量需要赋初值,否则为随机值、无效值,而全局、静态变量初值默认为0;

BootLoader启动过程

初始化处理器及外设、建立内存空间映射图、调用系统内核、跳转到用户程序

MCU启动操作

A.初始化时钟;

B.关闭看门狗;
C.建立中断向量表;
D.初始化堆栈寄存器;
E.内存初始化。

STM32F1和F4的区别

内核不同:F1是ARM M3内核,F4是ARM M4内核;
主频不同:F1主频72MHz,F4主频168MHz;
浮点运算:F1无浮点运算单位,F4有;
功能性能:F4外设比F1丰富且功能更强大,比如GPIO翻转速率、上下拉电阻配置、ADC精度等;
内存大小:F1内部SRAM最大64K,F4有192K(112+64+16)。

内联函数

内联函数和宏很像,是代码被插入到调用者代码处的函数,通过编译器实现,调用时不需要像普通函数一样入栈,所以效率高
它通过Inline进行限制。
它内部执行代码不能太多,一般不超过10行,不能有循环,不能有过多判断,也不能对内联函数取址。

启动文件的作用:

A.初始化堆栈指针SP
B.初始化PC指针,指向复位程序(其实就是BootLoader)
C.初始化中断向量表
D.配置系统时钟
E.调用C库函数 _main

华为

内联函数和宏定义的区别

A.是在代码处不加任何验证的简单替代,而内联函数将代码直接插入调用处,而减少了普通函数调用时的资源消耗
B.宏定义在预处理阶段进行替换(预处理器处理),内联函数在编译阶段进行替换(编译器处理);
C.内联函数在运行时可调试,宏定义不行;
D.编译器会对内联函数的参数类型做安全检查或自动类型转换,宏定义不会;
E.内联函数可以访问类的成员变量,宏定义不能;

进程间通信方式

管道、FIFO、消息队列、信号量、共享存储、套接字

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。