frame->descriptor = DMARxDescToGet;
frame->PTPdescriptor = DMAPTPRxDescToGet;
/* Update the ETHERNET DMA global Rx descriptor with next Rx decriptor */
/* Chained Mode */
/* Selects the next DMA Rx descriptor list for next buffer to read */
DMARxDescToGet = (ETH_DMADESCTypeDef*) (DMAPTPRxDescToGet->Buffer2NextDescAddr);
//不知一下几句是什么意思?
if(DMAPTPRxDescToGet->Status != 0)
{
DMAPTPRxDescToGet = (ETH_DMADESCTypeDef*) (DMAPTPRxDescToGet->Status); //这里为什么将status转换成指针?
}
else
{
DMAPTPRxDescToGet++;
}
此帖出自
小平头技术问答
- /**
- * @brief ETH DMA Desciptors data structure definition
- */
- typedef struct {
- uint32_t Status; /*!< Status */
- uint32_t ControlBufferSize; /*!< Control and Buffer1, Buffer2 lengths */
- uint32_t Buffer1Addr; /*!< Buffer1 address pointer */
- uint32_t Buffer2NextDescAddr; /*!< Buffer2 or next descriptor address pointer */
- } ETH_DMADESCTypeDef;
- ETH_DMADESCTypeDef *DMAPTPRxDescToGet;
复制代码而这里的status,只是状态位。也就是把status的值,变为指针,而不是获取status的地址。
typedef struct {
uint32_t Status; /*!< Status */
uint32_t ControlBufferSize; /*!< Control and Buffer1, Buffer2 lengths */
uint32_t Buffer1Addr; /*!< Buffer1 address pointer */
uint32_t Buffer2NextDescAddr; /*!< Buffer2 or next descriptor address pointer */
} ETH_DMADESCTypeDef;
ETH_DMADESCTypeDef *DMAPTPRxDescToGet; // DMAPTPRxDescToGet 是指向ETH_DMADESCTypeDef这种结构类型的指针,所以DMAPTPRxDescToGet = (ETH_DMADESCTypeDef*) (DMAPTPRxDescToGet->Status); 这个里要用指针付给指针.
[ 本帖最后由 安_然 于 2013-8-8 15:39 编辑 ]
一周热门 更多>