- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
嵌入式工程师面试题及答案
一、C语言基础(嵌入式核心工具)
问题:定义全局变量时加volatile和不加有什么区别?实际项目中什么时候必须加?
答案:不加volatile时,编译器可能会把变量缓存到寄存器里,比如循环判断while(flag),如果flag没加volatile,编译器觉得flag没被修改,会直接优化成死循环;加了volatile,编译器就会每次从内存读flag的值,不会优化。
实际项目里必须加的场景:比如中断服务函数里修改的全局变量(比如中断里改flag=1,主函数判断flag)、硬件寄存器地址映射的变量(比如读GPIO状态寄存器GPIOA-IDR),这些值可能被硬件/中断偷偷修改,必须强制每次读内存。
问题:野指针是怎么产生的?项目里怎么避免和排查野指针问题?
答案:野指针就是指针没指向合法内存,比如:定义了int*p但没赋值(乱指随机地址)、指针指向的内存被free/释放后还继续用、指针越界访问数组(比如数组长度5,却访问arr[10])。
避免方法:指针定义时先赋NULL,用完后也设NULL;用malloc/free时配对,free后别再用;数组访问加边界判断。排查的话,简单的看代码里指针赋值和使用的逻辑,复杂的用IDE的调试功能(比如Keil的Watch窗口看指针地址,或者加断言assert(p!=NULL),跑飞时能定位到哪步出问题)。
问题:static修饰函数和全局变量、局部变量,分别有什么作用?嵌入式里常用在哪?
答案:修饰局部变量时,变量不会随函数结束释放,下次进函数还是上次的值(比如统计函数调用次数);修饰全局变量/函数时,只能在当前.c文件里用,其他文件调不了(避免多文件变量/函数名冲突,比如多个驱动文件都有init()函数,加static就不会冲突)。
嵌入式里常用:比如某驱动的内部辅助函数(不用给其他文件调用)加static,或者在定时器中断里用static变量做计数(比如统计中断触发次数)。
二、MCU/处理器核心(嵌入式硬件基础)
问题:STM32(或你常用的MCU)配置中断时,除了使能中断源,还要做哪几步?中断服务函数里要注意什么?
答案:以STM32为例,还要配置中断优先级分组(比如用NVIC_PriorityGroupConfig)、设置中断通道的抢占优先级和响应优先级(NVIC_Init);如果是外部中断,还得配置GPIO的中断模式(比如上升沿/下降沿触发)。
中断服务函数里要注意:别做耗时操作(比如延时、循环处理大量数据),会影响其他中断响应;必须清除中断标志位(比如EXTI_ClearITPendingBit),不然会一直进中断;如果要传数据给主函数,用全局变量(记得加volatile)或者队列,别直接在中断里操作复杂外设。
问题:MCU的时钟树配置错了会有什么问题?比如把APB1外设时钟配置成超过最大允许频率,会怎么样?
答案:时钟错了可能导致外设不工作(比如UART波特率不对,发的数据乱码)、MCU运行速度异常(快了可能不稳定,慢了达不到实时要求)。
比如STM32的APB1最大频率是36MHz,如果配置成72MHz,首先外设可能直接不响应(寄存器读写无效),严重的话会损坏外设模块(虽然芯片一般有保护,但长期超频可能烧);还有比如定时器时钟错了,定时时间会不准(比如本来想定时1ms,结果变成0.5ms)。
三、外设驱动开发(嵌入式核心工作)
问题:写I2C驱动时,遇到从设备不应答(NACK)的情况,怎么排查原因?
答案:先查硬件:看SDA和SCL线有没有接反(很多新手会犯)、有没有上拉电阻(I2C需要外部上拉到VCC)、线路有没有接触不良(比如杜邦线松了)、从设备地址是不是错了(比如7位地址有没有加读写位)。
再查软件:看起始信号(START)是不是正确(SDA在SCL高电平时拉低)、从设备是不是在忙(比如EEPROM写操作时需要等待,这时候会NACK,得加重试机制)、时钟频率是不是太高(比如从设备最大支持100kHz,驱动写成400kHz,就会不应答)。
问题:UART通信时,接收端收到的数据有丢包或乱码,可能的原因有哪些?怎么解决?
答案:丢包可能是:接收端没及时读数据(UART缓冲区满了就会丢),解决的话要么用中断接收(数据到了就触发中断读),要么用DMA(让DMA自动存数据,CPU不用管);还有可能是波特率误差太大(比如发送端9600,接收端9601,误差超过3%就会错),得确保两端波特率、数据位、停止位、校验位一致。
乱码的话:除了波特率不匹配,还有可能是硬件干扰(比如线太长没屏蔽,靠近电机等干扰源),解决的
您可能关注的文档
- 办公软件实操试题及答案.docx
- 北京社区工作者考试模拟题及答案.docx
- 变态心理学初步筛查测试题及答案.docx
- 博士英语考试模拟题及答案解析.docx
- 叉车操作模拟考试题及答案.docx
- 叉车考试题库(含答案及解析).docx
- 叉车证考试题库及答案.docx
- 场景原画能力测试题及参考答案.docx
- 初级保安员考试题库及答案.docx
- 初级电工考试题库及答案.docx
- DB43∕T 1805-2020 樟树低效林分改造技术规程.docx
- DB23∕T 2417-2019 住宅厨房和卫生间排气系统应用技术规程.docx
- DB61_T 1848-2024 地震预警信息发布规范.docx
- DB21T 2325-2014 猪传染性胃肠炎病毒RT-PCR检测方法.docx
- DB4105_T 231-2024 智能区域自动气象站建设规范.docx
- DB62_T 4879-2024 铃铛刺播种育苗及造林技术规程.docx
- DB4201_T 504-2017 武汉市地质灾害危险性评估技术规程.docx
- DB4201_T 537-2018 武汉市房屋安全鉴定技术规程.docx
- DB62_T 4524-2022 土壤环境背景值.docx
- DB53_T 977-2020 硅藻改性沥青混合料施工技术规范.docx
最近下载
- (高清版)B-T 42588-2023 系统与软件工程 功能规模测量 NESMA方法.pdf VIP
- TCPIA 0131—2025《户用光储一体机技术规范》.pdf
- 中草药在保健型卷烟开发中的应用研究.pdf VIP
- 2025贵州贵阳市水务环境集团有限公司招聘32人笔试历年参考题库附带答案详解.docx VIP
- 临床医学-精神病学(儿童少年期行为和情绪障碍)试题及答案.docx VIP
- 《认识总体国家安全观》完整版PPT部编版.ppt VIP
- 产数工程师L1复习测试卷附答案.docx
- 公差分析标准模板.xlsx VIP
- 江西省市政工程消耗量定额及统一基价表(2017).pdf VIP
- XX医院PACS信息系统升级项目用户需求说明.docx VIP
文档评论(0)