for(i=0; i<headerLength; i++)
{
SPIx->DR = headerBuffer[i];
while ((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET);
SPIx->DR ;
}
声明 SPIx->DR ; 用于在读取STM32的SPI外设时清除其"数据寄存器"。
为什么没有L值是合法的? 它不应该像 temp = SPIx->DR;
?保罗
为什么没有 l 值是合法的?
左值仅在赋值的上下文中相关。表达式可以在任何地方不带左值的情况下编写,例如:
printf("hellon");
或
x++;
或
SPIx->DR;
所有这些语句都是有效的表达式,可以用作右值。(回想一下,printf
返回一个值。最后一个唯一不同的是,如果不是volatile
声明SPIx
,它不会有任何副作用。