Driver 有回调函数

Driver with callback function

我一直在研究一些嵌入式软件。这个软件分 分为两个主要部分。第一个是应用软件和 第二个是一些系统软件。系统软件包括 一组 drivers 和 RTOS。我一直在开发应用程序部分并且 我一直在使用准备好的drivers。 driver中还有 drivers 用于 CAN 通信。其中一项功能具有以下功能 界面

result_t can_set_receive_callback (can_receive_callback_t cb);

除了这个函数还有下面的指针定义 函数

typedef void (*can_receive_callback_t) (can_message_t msg);

我无法理解如何使用 driver 函数。我知道 我必须使用以下接口定义一些函数

void my_function (can_message_t m);

我也知道上面定义的函数就是所谓的回调函数。 但是不知道为什么要定义回调函数。

为什么不能在没有函数指针作为参数传递的情况下简单地调用 driver 函数?

难道我定义的回调函数"says"如何处理接收到的消息? drivers 开发者不知道的信息是什么?

我的意思是接收消息是 由准备好的中断服务程序处理,但 none 提到的 函数看起来像一个 ISR。

任何人都可以向我推荐一些好的文档吗 drivers 的这种类型的工作是如何描述的?非常感谢。

OSI model 说话驱动程序应该在物理层面上管理通信。

因此驱动程序执行通信设备激活、配置、读取、写入等来管理硬件在您的总线 (CAN) 上进行通信。

数据link层负责管理"protocol"总线上发送和接收的数据。

因此驱动程序开发人员需要数据 link 层开发人员设置在物理层触发特定事件时将调用(回调)的函数。

换句话说,在您的特定情况下,您必须根据您的协议及其特殊性(结构、时间等...)设置管理接收数据的回调