请教一下:我的SPI初始化如下: SPI_InitTypeDef SPI_InitStructure;
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Slave; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Hard; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure);
SPI_ITConfig( SPI1, SPI_IT_RXNE , ENABLE );
SPI_Cmd( SPI1, ENABLE ); 中断函数如下: void SPI1_IRQHandler(void) { if(SPI_GetFlagStatus(SPI1,SPI_IT_ERR)!= RESET) { printf("ovr error!"); }
if(SPI_GetFlagStatus(SPI1,SPI_IT_RXNE)!= RESET) { _bBuf[_bCount] = SPI_ReceiveData(SPI1); _bCount++; printf("count=",bCount); } } 外部设备为主,每次发两个字节。 为什么在每次上电后,主方发送第一个字节时,产生不了中断。第二个才产生中断。导致第一笔的两个字节只收了第一个字节,第二个字节就丢掉了。之后接受到的数据也都正常。 |