- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
单片机工程师面试题及答案
一、基础应用类
问题:单片机中寄存器和RAM的核心区别是什么?实际编程中怎么避免混淆使用?
答案:寄存器是CPU直接操作的硬件单元(比如GPIO方向寄存器、定时器控制寄存器),地址固定且数量有限,操作后直接作用于硬件;RAM是临时数据存储区,地址可灵活分配,掉电数据丢失。编程时靠“地址定义”区分——比如STM32用#defineGPIOA_CRL0义寄存器地址,用u8temp;声明RAM变量,且寄存器操作后一般不加“赋值回存”,RAM变量需手动管理读写。
问题:UART通信时经常出现丢包,排除接线问题后,从软件和硬件两方面怎么排查?
答案:硬件先查“电平匹配”(比如5V单片机接3.3V模块要加电平转换)和“干扰”(看晶振是否稳定、通信线是否靠近强电线路,可加100pF滤波电容);软件先查“波特率误差”(比如11.0592MHz晶振算9600波特率误差小,12MHz误差大易丢包),再查“接收缓冲区”(若用查询方式,要确保每次接收后及时读取,若用中断,要避免中断嵌套导致缓冲区溢出,可加环形缓冲区)。
问题:51单片机定时器0工作在模式1(16位定时),晶振11.0592MHz,要定时1ms,初值怎么算?写出计算过程。
答案:第一步算机器周期:11.0592MHz=z,机器周期=12≈1.085μs;第二步算定时1ms需计数次数:1000μs/1.085μs≈921次;第三步算初值:16位定时器最大计数65536,初值=65536-921=64615,十六进制是0xFC67,所以TH0=0xFC,TL0=0x67。
二、进阶开发类
问题:STM32中配置中断时,为什么要注意“中断优先级分组”?实际项目中怎么分配优先级(比如串口接收中断和定时器中断)?
答案:因为STM32中断优先级分“抢占优先级”和“响应优先级”,分组决定了两者各占几位(比如分组2是2位抢占+2位响应),不分组会导致优先级配置无效。项目中按“实时性”分配:比如电机控制的定时器中断(需精准定时)抢占优先级设1,串口接收中断(允许短延迟)抢占优先级设2;若同抢占级,响应优先级按“数据重要性”,比如串口接收(丢包影响大)响应优先级设0,普通定时器(延迟1ms没事)设1。
问题:单片机做低功耗设计,除了选低功耗芯片,软件和硬件还有哪些具体措施?
答案:硬件:①电源用LDO(比如HT7333)代替线性稳压器,降低静态电流;②GPIO设为高阻态(尤其未使用的引脚),避免漏电流;③晶振选32.768kHz(低速时钟比高速时钟功耗低)。软件:①关闭未使用的外设时钟(比如不用SPI就把SPI时钟使能位清0);②用休眠模式(比如STM32的STOP模式,比RUN模式功耗低两个数量级),且休眠前关闭ADC、DAC等大功耗外设;③中断唤醒后快速处理任务,处理完立即重回休眠。
问题:用单片机驱动LCD1602时,有时会出现显示乱码,排除硬件接线后,软件上可能是什么原因?怎么解决?
答案:原因:①“时序不匹配”——LCD1602的使能信号(E)脉冲宽度不够,或指令发送间隔太短(比如刚发完清屏指令就发显示指令,清屏需要1.64ms,没等完就会乱码);②“数据/指令引脚(RS)电平错”——比如想发指令却把RS设为高(当成数据发了);③“初始化不完整”——比如没按规格书顺序设置显示模式(先设8位/4位接口,再设显示行数和字体)。解决:①在发送指令后加延时(比如清屏后延时2ms,普通指令延时50us);②用宏定义固定RS电平(#defineLCD_CMD0,#defineLCD_DATA1),避免手误;③初始化时严格按规格书步骤,每步加足够延时。
三、项目实操类
问题:项目中用单片机做电机转速闭环控制,怎么设计“采样-计算-输出”的流程?如果转速波动过大,怎么优化?
答案:流程:①采样——用编码器(比如AB相编码器)接定时器的正交解码模式,定时100ms读取脉冲数,换算成转速(比如100ms读100个脉冲,电机转一圈200脉冲,转速=(100/200)*60=30r/min);②计算——用PID算法,把“目标转速-实际转速”的偏差算成PWM占空比(比如偏差正,增加占空比;偏差负,减少占空比);③输出——把计算出的占空比赋值给定时器PWM通道,驱动电机。优化波动:①采样端加“滑动滤波”(比如取最近3次采样的平均值
文档评论(0)