首页 > 解决方案 > 外设驱动中回调函数有什么用?

问题描述

我正在读一本关于编写嵌入式系统外围驱动程序的书,作者写了一个C回调函数,我真的不明白,想知道它的用法,它与中断处理有关吗?函数原型如下: void Spi_CallbackRegister(SpiCallback_t Function, TYPE (*CallbackFunction)(type));

标签: cembedded

解决方案


简短的回答:回调函数是在特定事件发生时调用它们的函数指针。

假设您有一个像以太网 (MAC) 设备这样的 IO 设备。此类设备的驱动程序将始终等待事件发生,这些事件是硬件或软件中断,例如:

  1. 一个新的数据包已经到达。
  2. 一个数据包将要发送。
  3. 启动从设备 FIFO 到主机存储器 (DMA) 的数据包传输。
  4. 协议状态已更改/等。

要处理各种中断类型,您需要为它们中的每一个提供特定的函数,这些函数称为中断服务程序(ISR)或中断处理程序或callback function. 当一个事件映射到一个函数时,它会存储它的指针,这就是为什么callback使用function.


推荐阅读