1.介绍一下自己吧?
要求:言简意赅,和应聘岗位相关的简历(根据公司岗位更改自我介绍),为什么能够胜任这个岗位的工作,为什么要应聘这个岗位的原因是什么?(职业规划)
总结:介绍自己+应聘的工作是什么+对这个公司/工作的了解+开始将自己的知识和岗位需求的重合.
2.介绍一下STM32的外设
GPIO:通用IO;AFIO:复用IO
EXTI:外部中断;TIM:定时器
ADC:模数转换器;DMA:直接内存访问
USART:同步/异步串口通信;I2C和SPI
CAN和USB;RTC;SDIO;FSMC
3.简单说一下SPI,IIC,UART
SPI是同步,串行,全双工的通信方式,6根线:VCC,GND,CS,MOSI,MISO,时钟线。SPI不支持多个主设备,传输速率快。
IIC是同步,串行,半双工的通信方式,4根线:VCC,GND,SCL,SDA,。IIC支持多个主设备,具有总线仲裁。
UART和USART,USART支持同步和异步方式,全双工,串行的通信方式。UART是四根线,GND,VCC,RXD,TXD。传输距离比I2C长些。
4.SPI,IIC,UART通信速率比较
SPI > I2C > UART
1.同步大于异步
2.同步通信时必须有一根时钟线连接传输的两端
3.适合传输的距离和通信速率成反比关系
5.总线接口UART I2C SPI USB的异同点
1.UARU通用异步串行口,速率不快,可全双工,结构上一般由波特率产生器,UART发送器,UART接收器组成,硬件上两线,一收一发
2.SPI高速同步串行口,高速,可全双工,收发独立,同步接口,可实现多个SPI设备互连,硬件4条线。SPI通信无起始位和停止位
3.I2C串行,多主控,两线。速率不快,半双工,同步接口,具有总线仲裁机制。
4.USB通用串行总线,高速,半双工。
6.串口配置
波特率:指的是数据传输的速度,两个通信设备之间的波特率必须匹配,否则无法正确传输数据。
数据位:数据位指的是每次传输的数据的位数,常见的有七位和八位。数据位的数量会影响信息的详细程度和传输的效率。
停止位:停止位用于标志数据帧的结束,常见的设置有一位或两位。停止位的数量会影响数据传输的准确性
奇偶校验:奇偶校验是一种错误检测方法
流控制:流控制用于管理数据流
时钟配置:对于某些特定的串口通信,如STM32,还需要进行时钟配置,来使能USART模块和GPIO模块的时钟
端口设置:需要确保串口端口正确连接到外部设备
7.IIC配置
起始信号和停止信号:这些信号标志着数据传输的开始和结束。
设备地址:每个IIC总线上设备都需要有一个唯一的地址,以便主设备能够识别并与之通信。
数据有效性:确保数据在总线上的城阙传输,包括数据的同步和校验
8.SPI配置
时钟极性和时钟相位:决定SPI通信中数据采样时机的关键因素。时钟极性指的是时钟信号在空闲状态时的电平,而时钟相位则决定了数据是在时钟信号的上升沿还是下降沿(奇数还是偶数跳变)被捕获。
主模式和从模式:SPI通信由一个主设备和一个或多个从设备组成。主设备控制时钟信号和从设备选择信号,而从设备则根据主设备的时钟信号来发送或接收数据。
时钟信号:需要确保主设备和从设备的时钟频率设置一致
9.结构体在单片机中的妙用
结构体是开发者自定义类型的一种,可以将不同数据类型,但相关的多个数据作为一个整体进行描述的数据结构.
-
数据整合:结构体可以将不同的数据类型组合在一起,形成一个新的复合数据类型。这对于管理具有多个属性的外设特别有用,比如一个传感器可能会包含温度、湿度和压力等多个测量值。
-
代码模块化:通过使用结构体,可以将相关的函数和变量组织在一起,使得代码更加模块化,便于阅读和维护。
-
提高可读性:结构体的使用可以让代码的意图更加明确,尤其是在处理复杂的数据时,可以提高程序的可读性。
-
方便传递:当需要将一组数据传递给函数或在不同的函数之间共享数据时,结构体可以作为一种容器,一次性传递所有相关数据。
-
接口定义:在与外部设备通信时,结构体可以用来定义通信协议中的数据包格式,确保数据的正确传输和解析
10.指针数组和数组指针
数组的指针:是一个指针,什么样的指针呢?指向数组的指针。
指针的数组:是一个数组,什么样的数组呢?装着指针的数组。
12.MCU外部的一些上升沿和下降沿的中断
外部中断:MCU通常提供外部中断引脚,当外部信号的上升沿触发时,会产生一个中断请求,从而执行相应的中断服务程序。
定时器中断:定时器设置为计数模式,并配置为在计数值达到设定值时触发中断,通过设置计数器的时钟源和计数值,可以实现在特定时间间隔内检测上升沿并触发中断
外部事件中断:某些MCU提供了外部事件模块,可以通过配置外部事件的触发条件为上升沿来实现上升沿中断。
13.c语言中实现队列
实现方式:用数组还是链表,用链表来实现会更方便,原因如下:
队列有多少元素不确定,链表可以做到需要就申请,不用就是释放,较为方便
队列是先进先出,顺序固定,不需要随机访问。