面试宝典:单片机嵌入式软件开发工程师面试题精选
前两天去面试,面试前有一个技术笔试,一共8道题,凭记忆总结列出,供各位参考。
(感兴趣的读者可以在评论区作答讨论,有的题目笔者也没答出来)
1. 有8只传感器A1~A8,每个传感器有4种状态,分别表示为0、1、2、3,编写程序将8只传感器的状态用一个32位无符号整形数据表示,并printf出来。
2. 下面程序输出结果是什么,为什么?
uint32_t i = 10;
int j = -10;
(i+j>0)?puts(">0"):puts("<=0");
3. 已知下列代码段
int A[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int *p = &A[5];
则p[5]为多少?
4. 已知设备采用大端模式,在0x8000处定义一个int型变量A,值为0x223344,填空。
地址 | 0x8000 | 0x8001 | 0x8002 | 0x8003 |
数据 |
5. 编写函数,函数功能为使程序跳转到0x8001000处执行。
6. 采用485通信,传输一个字节0x37占用11bit,采用偶校验,填空:
起始 | 数据 | 校验 | 结束 | |||||||
0 | 0 |
帧格式如下:
帧头1 | 帧头2 | 长度 | 数据 | 数据 | 数据 | 数据 | 数据 | 数据 | 校验 |
0xFF | 0x55 | 1Byte | 1Byte | 1Byte | 1Byte | 1Byte | 1Byte | 1Byte | 1Byte |
如果每次接收数据时,一帧数据的前面总有几个多余的无效字节,编写程序完成数据过滤。
7. 已知MCU的内部ADC为6位精度,内部参考电压是1.6V,采用图示电路进行AD采样,MCU转换后的值为0x20,则A、B、C三点的电压分别是多少?
8. 采用50%占空比的方波进行超声波测距,频率为40kHz,则方波的脉宽是多少微秒?已知声音速度是340m/s,如果用超声波从发射到接收信号一共用了1ms,则障碍物距离为多少?如果在电路中采用一个三极管作为电子开关,将MCU引脚通过一个330Ω的电阻连到三极管的基极,此处电阻的作用是什么,如果不连电阻,直接将MCU引脚接到三极管的基极,会有什么影响?
作者:La Jiankai