关于SPI寄存器的读取

zxq180   2008-5-19 09:12 楼主
void SPI_ClearITPendingBit(SPI_TypeDef* SPIx, u8 SPI_IT)函数中有:

if(SPI_IT == SPI_IT_MODF)
{
    /* Read SR register */
    (void)SPIx->SR;
    
    /* Write on CR1 register */
    SPIx->CR1 |= CR1_SPE_Set; 
}

读取SR寄存器,用(void)SPIx->SR;
这句话不大明白,用(void)SPIx->SR;就表示了读取SR寄存器?这种写法没怎么见过啊!

回复评论 (5)

哈哈,以前没见过,这次见识了就学会了!

用(void)SPIx->SR;就表示了读取SR寄存器!

一般读取寄存器都是要把读到的数据赋值到某个变量,但如果不关心读取到的数据则可以用这种写法,但注意被操作的寄存器必须是声明为volatile。
点赞  2008-5-19 10:38

见识了


见识了...^_^
点赞  2008-5-19 10:52

volatile

                                 volatile 是防止该语句被编译器优化。
点赞  2008-6-15 11:57

可以看它的汇编,

                                  
点赞  2008-6-15 13:23

mark!

                                  
点赞  2008-6-15 13:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复