
一、API 基础定义API 全称应用程序编程接口是程序间标准化交互通道。嵌入式领域分为三大类系统 API、库 API、Web API覆盖单片机、Linux 嵌入式全开发场景。二、嵌入式三类 API 总览对比表API 分类底层本质嵌入式典型接口操作对象缓冲特性系统 API操作系统内核系统调用open/read/write/ioctl系统 IO硬件设备节点、驱动、文件描述符 fd无用户态缓冲每次读写直接陷入内核库 API上层封装函数库标准 IO (fopen/fread)、STM32 HAL、Modbus/MQTT 协议库FILE 文件指针、外设句柄、协议实例自带用户态缓冲区批量读写降内核开销Web API网络通信接口HTTP、MQTT、TCP/IP 接口云端服务器、远程控制指令协议栈内置收发缓冲三、核心重点系统 IO vs 标准 IO面试必考对比维度系统 IO系统 API标准 IO库 API操作句柄int fd 文件描述符FILE *fp 文件流指针依赖头文件unistd.hfcntl.hstdio.h缓冲机制无用户缓冲实时读写全缓冲 / 行缓冲数据暂存内存实时性能实时性强数据无延迟实时差数据滞留缓冲区适用场景串口、ADC、GPIO 驱动、硬件设备节点普通配置文件、日志读写强制刷新无需刷新直接写入内核fflush (fp) 强制刷写缓冲区记忆口诀系统 IO 裸奔直连内核硬件驱动优先选用标准 IO 自带缓存普通文件读写高效。四、嵌入式软件分层调用结构自上而下应用层Web APIMQTT/HTTP 设备上云库函数层标准 IO HAL 外设库 Modbus/CAN 等通信协议库系统调用层open/read/write/ioctlLinux 系统 IO系统 API内核驱动层字符设备 / 块设备 / 网络设备驱动硬件层GPIO、UART、SPI、I2C、ADC 底层寄存器规则每层仅调用下一层 API禁止跨层直接操作硬件寄存器。五、三类 API 极简可运行代码示例1. 系统 IOLinux 操作串口设备#include fcntl.h #include unistd.h // 打开串口设备节点 int fd open(/dev/ttyS1, O_RDWR); write(fd, AT\r\n, 4); // 无缓冲立即下发串口 char buf[32] {0}; read(fd, buf, sizeof(buf));// 实时读取硬件返回数据 close(fd);2. 标准 IO读写设备配置文件#include stdio.h FILE *fp fopen(dev_config.txt, r); char buff[64]; fgets(buff, sizeof(buff), fp); // 缓冲区批量读取 fflush(fp); // 强制刷新缓存写入文件 fclose(fp);3. HAL 库 APISTM32 单片机外设操作HAL_UART_Transmit(huart1, data, len, 100); // 串口发送 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // 点亮LED uint16_t adc_val HAL_ADC_GetValue(hadc1); // 采集ADC电压六、嵌入式开发场景 API 选型速查表开发场景选用 API 类型核心函数 / 接口串口、传感器硬件采集系统 IO / HAL 库read/write、HAL_UART_TransmitGPIO 引脚电平控制系统 IO / HAL 库ioctl、HAL_GPIO_WritePin本地配置、日志文件读写标准 IOfopen、fread、fwrite物联网设备上云、远程控制Web APIMQTT publish/subscribe、HTTP POST多进程、进程间通信系统 APIpipe、shm、socket定时器、PWM 输出系统 API / HAL 库timer_create、HAL_TIM_Base_Start七、嵌入式 API 核心价值屏蔽硬件差异更换芯片只需修改底层 API上层业务代码无需改动降低开发门槛无需操作底层寄存器调用封装函数即可驱动外设分层解耦稳定驱动层、应用层隔离独立调试、独立升级万物互联基础Web API 实现单片机、Linux 设备与云端、手机 APP 数据互通。八、全文总结硬件底层驱动、Linux 设备文件使用系统 API系统 IO文件读写、芯片外设、通信协议调用库 API标准 IO、HAL 库物联网联网、云端数据交互依靠Web API。吃透三类 API 的定义、分层、场景与代码示例即可掌握嵌入式开发全部 API 核心知识。