下面展示一些 内联代码片
。
HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi,uint8_t *pTxData, uint8_t *pRxData, uint16_t Size,uint32_t Timeout)
形参pRxData
uint8_t *pRxBuffPtr; /*!< Pointer to SPI Rx transfer Buffer
hspi->pRxBuffPtr = (uint8_t *)pRxData;
指针的赋值,“=”的左操作数可以是*p,也可以是p。
当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据;
当“=”的左操作数是p时,改变的是p所指向的地址
显然 我们在改变指向的地址 而且是(uint8_t*)强制类型转化后的
*((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR);
指针前面有*,显然在改变地址存放的数值而且类型是(uint32_t *) RXDR寄存器里取值 前面__IO volatile类型
*((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR);
*((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR);
类似效果