欢迎光临
我们一直在努力

嵌入式开发 API 笔记

一、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.h> <fcntl.h> <stdio.h>
缓冲机制 无用户缓冲,实时读写 全缓冲 / 行缓冲,数据暂存内存
实时性能 实时性强,数据无延迟 实时差,数据滞留缓冲区
适用场景 串口、ADC、GPIO 驱动、硬件设备节点 普通配置文件、日志读写
强制刷新 无需刷新,直接写入内核 fflush (fp) 强制刷写缓冲区

记忆口诀

系统 IO 裸奔直连内核,硬件驱动优先选用;标准 IO 自带缓存,普通文件读写高效。

四、嵌入式软件分层调用结构(自上而下)

  • 应用层:Web API(MQTT/HTTP 设备上云)
  • 库函数层:标准 IO + HAL 外设库 + Modbus/CAN 等通信协议库
  • 系统调用层:open/read/write/ioctl(Linux 系统 IO,系统 API)
  • 内核驱动层:字符设备 / 块设备 / 网络设备驱动
  • 硬件层:GPIO、UART、SPI、I2C、ADC 底层寄存器

规则:每层仅调用下一层 API,禁止跨层直接操作硬件寄存器。

五、三类 API 极简可运行代码示例

1. 系统 IO(Linux 操作串口设备)

#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 库 API(STM32 单片机外设操作)

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_Transmit
GPIO 引脚电平控制 系统 IO / HAL 库 ioctl、HAL_GPIO_WritePin
本地配置、日志文件读写 标准 IO fopen、fread、fwrite
物联网设备上云、远程控制 Web API MQTT publish/subscribe、HTTP POST
多进程、进程间通信 系统 API pipe、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 核心知识。

    赞(0)
    未经允许不得转载:171主机测评 » 嵌入式开发 API 笔记
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址