做了一个SPI与74HC595进行数码管显示,
但是在发送数据时,出现了一个怪事:
SPI_CR1=0B11000110;
SPI_CR2=0B11000011;
SPI_ICR=0B00000000;
SPI_DR=0x00;
for(A=0;A<2;A++)
{_asm("nop");}
while(SPI_SR & 0x02 == 0);
PD_ODR|=0B0001000;
_asm("nop");
PD_ODR&=0B1110111;
问题如下:
SPI_DR=0x00;
后面必须加延时,否则出错。
for(A=0;A<2;A++)
{_asm("nop");}
看了几遍数据手册,也没提到延时,这是为什么呢,
在此加了延时,就正常了!
_asm("nop"); |