首页 > 解决方案 > 将指针的地址而不是指针作为函数参数传递

问题描述

所以我试图理解传递给这个函数的参数。

第二个参数接受一个指针

BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;

那么如何传递一个指针的地址是合法的呢?

struct AMessage *pxMessage;
pxMessage = & xMessage;
xQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0, queueSEND_TO_BACK );
 

参考: http ://web.ist.utl.pt/~ist11993/FRTOS-API/group___queue_management.html#xQueueGenericSend

标签: cfreertos

解决方案


freeRTOS 队列函数传递消息。如果消息是您需要传递对它的引用的指针。然后这个引用被取消引用。

在这种情况下,指向消息的指针将被排队 - 而不是消息本身。

它的工作原理与 memcpy 完全相同。memcpy 参数void *和任何指针都可以传递给这个函数。


推荐阅读