MPS - 嵌入式软件工程师 - 笔试

❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗

alt

本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。

岗位:嵌入式软件工程师(成都)

题型:10 道填空题,3 道编程题,4 道问答题

1、填空题

1.1

一些代码量较小的函数可以使用关键字 (1) 说明该函数是内联函数,其优点 (2),缺点 (3)

解答:

  1. inline
  2. 减少函数调用开销,提高程序运行效率
  3. 可能导致代码膨胀,增加编译后的代码体积

1.2

假设串口波特率为 9600,设置数据位 8,起始位 1,奇偶校验位 1,停止位 2。则每秒钟串口可以传输 (1) 个字节数据。

解答:

  1. 800

1.3

知某外设的基地址为 0x800_0000,内部控制寄存器信移地址 0x8000,请用一条指令设置控制寄存器的BIT[6:7] 位域清零,其它位不变 (1)

解答:

  1. BIC [0x8008000], #0xc0

1.4

Linux下常用命令使用:

  1. 新建一个名字为 Test 的目录:(1)
  2. 删除内有文件和子目录的名字为 Test 的目录:(2)
  3. 列出当前目录下的所有文件和子目录:(3)

解答:

  1. mkdir Test
  2. rm -r Test
  3. ls

1.5

在 ARM M0 MCU 编程开发环境中,下面结构体变量 a 所占内存大小是(1)

struct Member {
    char name[30];
    int age;
    double score;
} a = {"Lucky", 18, 90.5};

解答:

48

1.6

FreeRTOS 是一种实时可抢占式操作系统,FreeRTOS 内核采用的调度算法(1)

解答:

  1. 时间片轮询的优先级抢占式调度算法

1.7

正常的中断服务程序中,其最后执行的一条指令是(1),中断服务程序的入口地址是(2)

解答:

  1. BX LR
  2. 0x08000000

1.8

有数组 int a[X]; 其中 x 为大于 0 的某一未知常数,请用通用公式计算出数组长度等于:(1),所占内存大小:(2)

解答:

  1. sizeof(a) / sizeof(a[0])
  2. sizeof(a)

1.9

MCU 中一个 12bit 精度 adc 模块,参考电压为 3.3V,采样电路使用 90.9K/10K 电阻分压,请使用宏定义一个函数,根据 ADC 采样结果 x,求解实际被采样电压(单位:mV)大小:(1)

解答:

#define ADC_TO_VOLTAGE(x) (x)*3300*1009 / (4096*10)

1.10

I2C 是一种串行通信协议,用于在芯片之间传输数据。其起始信号 SCL 和 SDA 变化是:(1)

解答:

  1. SCL 保持高电平,SDA 产生下降沿

2、编程题

2.1

题目:

请根据流程图用伪代码实现状态机切换及事件响应。

解答:

Click to view image

#include <stdio.h>
#include <stdbool.h>
#include <time.h>

// 定义状态枚举
typedef enum {
    IDLE_STATE,
    PE_SEND_ALERT,
    PE_WAIT_FOR_GET_STATUS,
    PE_GIVE_STATUS
} State;

// 定义事件枚举
typedef enum {
    EVENT_TIMEOUT,
    EVENT_RX_CMD_SEND_ALERT,
    EVENT_TX_ALERT_MSG_SUCCESS,
    EVENT_RX_GET_STATUS_MSG,
    EVENT_TX_STATUS_MSG_SUCCESS,
    EVENT_TX_RETRY_FAILED
} Event;

// 当前状态
State currentState = IDLE_STATE;

// 状态机函数
void stateMachine(Event event) {
    switch (currentState) {
        case IDLE_STATE:
            if (event == EVENT_RX_CMD_SEND_ALERT) {
                currentState = PE_SEND_ALERT;
            }
            break;

        case PE_SEND_ALERT:
            if (event == EVENT_TX_ALERT_MSG_SUCCESS) {
                currentState = PE_WAIT_FOR_GET_STATUS;
            }
            else if (event == EVENT_TX_RETRY_FAILED) {
                currentState = IDLE_STATE;
            }
            break;

        case PE_WAIT_FOR_GET_STATUS:
            if (event == EVENT_RX_GET_STATUS_MSG) {
                currentState = PE_GIVE_STATUS;
            }
            else if (event == EVENT_TIMEOUT) {
                currentState = I

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客企业服务