|
发表于 2018-11-15 01:39:15
|
显示全部楼层
- while(1) {
- while(!LL_SPI_IsActiveFlag_TXE(SPI1));
- LL_SPI_TransmitData8(SPI1, 0xff);
- while(!LL_SPI_IsActiveFlag_RXNE(SPI1));
- LL_SPI_ReceiveData8(SPI1);
- }
复制代码
这种写法,TX寄存器为空之后发送暂停了,一直等待
直到读取DR寄存器,进行跳转、while(1)和while(!LL_SPI_IsActiveFlag_TXE(SPI1))判断,然后才再次写DR寄存器,并且写完DR寄存器还不是立刻开始发送数据
这会造成很大的浪费
- while(!LL_SPI_IsActiveFlag_TXE(SPI1));
- LL_SPI_TransmitData8(SPI1, 0xff);
- while(1) {
- while(!LL_SPI_IsActiveFlag_TXE(SPI1));
- LL_SPI_TransmitData8(SPI1, 0xff);
- while(!LL_SPI_IsActiveFlag_RXNE(SPI1));
- LL_SPI_ReceiveData8(SPI1);
- }
- while(!LL_SPI_IsActiveFlag_RXNE(SPI1));
- LL_SPI_ReceiveData8(SPI1);
复制代码
试试这样操作,在做跳转和while判断的时候,数据发送持续在工作,减小浪费 |
|