keil debug时程序卡在 while ( ( SPI_PERIPH->SR & SPI_I2S_FLAG_RXNE ) == (uint16_t)RESET ) 的一个原因

0x00 原因

KEIL debug过程中如果打开了SPI寄存器窗口,KEIL会读取DR寄存器导致RXNE位置0。
在这里插入图片描述

0x01 SPI SR寄存器RXNE位介绍

RXNE 是指SPI接口的接收缓冲区非空位,当接收缓冲区接收到数据时,RXNE 将被设置为1,当SPI DR寄存器被读取时,RXNE 自动被置0;

参考

参考1