void *pdata的理解分析

 

形式参数变量[L3.1(1)]是由用户代码在第一次执行的时候带入的。请注意,该变量的
类型是一个指向void的指针。这是为了允许用户应用程序传递任何类型的数据给任务。这
个指针好比一辆万能的车子,如果需要的话,可以运载一个变量的地址,或一个结构,甚至
是一个函数的地址。也可以建立许多相同的任务,所有任务都使用同一个函数(或者说是同
一个任务代码程序), 见第一章的例1。例如,用户可以将四个串行口安排成每个串行口都
是一个单独的任务,而每个任务的代码实际上是相同的。并不需要将代码复制四次,用户可
以建立一个任务,向这个任务传入一个指向某数据结构的指针变量,这个数据结构定义串行
口的参数(波特率、I/O口地址、中断向量号等)。

(MCO301.h)文件第(23)行中的[#include "CO_SYNC.h"]语句没有使用[ifndef/endif]结构。 /* * @Author: duanhuisheng * @Date: 2021-05-26 11:53:35 * @LastEditTime: 2021-06-05 15:43:54 * @LastEditors: Please set LastEditors * @Description: * @FilePath: \mtsv_-osa_-int\Module\UM_Communication\MCO301\CO_SYNC.h */ #ifndef _CO_SYNC_H_ #define _CO_SYNC_H_ /****************************************************************************** * 文件 : CO_PDO.h * 作者 : dhs * 版本 : V1.0 * 日期 : 2020-9-9 * 描述 : Canopen 301 pdo模块 ******************************************************************************/ #include "CO_DATA.h" #include <stdint.h> /** * SYNC producer and consumer object. 同步生产者和消费者对象 */ typedef struct { CLASS_MObj(mObj); uint8_t (*TxCalbk)(uint8_t chx, uint8_t* pData, uint8_t DLC); uint8_t* operatingState; /**< From CO_SYNC_init() */ Bool isProducer; /* 为1为生产者,为0为消费者 */ uint16_t COB_ID; /* */ uint32_t periodTime; /* 通信循环周期 us (index 0x1006) */ uint32_t periodTimeoutTime; /* 超时时间 us */ uint32_t *synchronousWindowLength; /* 同步窗长度 us (index 0x1007) */ uint8_t *counterOverflowValue; /* 同步计数溢出值 (index 0x1019) 0 或 2~240 */ Bool curentSyncTimeIsInsideWindow; /* 处于同步窗的状态 0 false 1 true */ Bool running; /* 1 允许正常发送 0不允许 */ uint8_t counter; /* 同步状态的计数值 */ C_DATA CANrxData[1]; uint32_t timer; /* 循环计数器 */ uint16_t receiveError; /* 接收错误标记 */ CO_CANtx_t* CANtxBuff; /* 最小发送单元缓存 */ CO_CANrxMsg_t* msg; } CO_SYNC_Prop; typedef struct { void (*const Create)(CO_SYNC_Prop* self); void (*const Init)(CO_SYNC_Prop* self, CO_CANtx_t* CANtxBuff, uint8_t* operatingState, uint8_t nodeId, CO_CANrxMsg_t* msg, uint8_t* counterOverflowValue, /* 同步计数溢出值 (index 0x1019) 0 或 2~240 */ uint32_t* synchronousWindowLength, /* 同步窗长度 us (index 0x1007) */ uint8_t (*TxCalbk)(uint8_t chx, uint8_t* pData, uint8_t DLC)); uint8_t (*producerTX_PeriodRun)(CO_SYNC_Prop* self, uint32_t timeDifference_us); /* 生产者发送 */ uint8_t (*consumerRX_PeriodRun)(CO_SYNC_Prop* self); /* 消费者接受 */ } CO_SYNC_Func; extern CO_SYNC_Func CO_SYNC_F; #endif
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值