嵌入式面试问题系列:深入解析STM32技术相关面试问题(二)
一、GPIO
1、GPIO结构
保护二极管;上下拉电阻;施密特触发器;P-MOS,N-MOS
2、输入模式?
浮空;上下拉,模拟
3、输出模式?
推挽;开漏;复用推挽;复用开漏
4、开漏和推挽的区别
二、STM32启动流程
1、F1和F4的区别
内核;主频;浮点运算;
2、启动流程
1.设置boot引脚,选择启动模式,将对应区域的存储空间映射到0x00000000中。
2. 设置堆栈大小,定义栈的起始地址,堆的起始地址以及结束地址
3.定义中断向量表,定义了复位、NMI、硬件故障、内存管理单元故障、总线故障、使用错误等异常处理函数的入口地址。
4.执行Reset_Handler复位处理函数,调用SystemInit函数完成系统的初始化函数并跳转到__main函数。
5.执行__main函数,进行异常处理函数的定义,完成用户堆栈的初始化。
6. 执行用户的主函数。
三、中断
1、中断和异常的区别?
中断是对系统发生的某一事件的响应,如IO中断,时钟中断;
异常是由CPU本身引起的,如系统调用,算术溢出等。
2、中断和DMA的区别?
中段传输方式是在数据缓冲区满后发生中断请求,CPU进行中断处理将数据传输到内存,而DMA方式则是以数据块为单位传输的,在所要求传送的数据块全部传送结束时要求CPU进行中断处理。DMA运输的大部分时间,CPU和输入输出都处于并行操作,因此,整个计算机系统的效率大大提高,但DMA也是要利用中断的,否则CPU无法获知数据已经传输结束。
3、中断和轮询的区别?
中断是由硬件来判断是否发生外部事件并通知CPU,然后采用专用的中断服务程序来处理事件。轮询是周期/连续的检查外部事件是否发生,需要消耗大量CPU的处理时间。
中断:适用处理对响应要求非常高的事件或处理持续事件非常短的事件,程序设计较复杂。
轮询:适于处理对时间响应要求低的场合,程序设计较为简单。
4. 嵌入式系统中的中断优先级如何确定?
安全性和稳定性;实时性;中断时间
5、STM32是如何处理中断的
6、抢占优先级和响应优先级都一样,怎么执行?
抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队,中断号是中断服务函6数所处在中断向量表的位置,越小位置越前
7、什么是中断嵌套?
低抢占优先级中断可被高抢占优先级中断打断
四、定时器
1、定时器延时相对于软件延时的好处?
精确率和稳定性好;CPU资源利用率高
2.请解释嵌入式系统中的时钟和定时器的作用,以及你在项目中如何使用它们
时钟可以提供统一的时间基准,用于驱动组件的运行,同时保证系统所有组件的同步工作。
定时器可以实现:
1.不占用CPU资源完成延时功能。
2. 周期性任务,如定时采样,定时刷新
3. 计数器功能,记录特定事件的发生次数和时间间隔
4. PWM, 定时器可以用于生成PWM信号,控制电机速度、LED亮度等。
五、ADC
1、ADC的概念
将连续变量的模拟信号转换为离散变量的数字信号。
2、 ADC的位数(精度)?
12位ADC,=4095
六、PWM
PWM是脉冲宽度调制(Pulse Width Modulation)的缩写,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。通过调整脉冲的宽度和周期,PWM可以模拟出不同的电压
作者:fengzhenn