然后又有新问题了,主机发送过来的5个16位数据,帧首是0x3a05,我修改程序后,串口把接受的数组发送过来,结果全是0x3a05。
修改后的程序:
- void SPI2_IRQHandler(void)
- {
- static u16 spi2Recive[5];
- static u8 spi2Num;
- u8 i;
- u16 spi2Temp;
- spi2Temp = SPI_I2S_ReceiveData(SPI2);
- if(spi2Num == 0)
- {
- if(spi2Temp == 0x3a05)
- {
- spi2Num = 1;
- spi2Recive[0] = spi2Temp;
- // SPI_I2S_SendData(SPI2, spi2Temp);
- // printf("\r\nthe first data is: %x", spi2Temp);
- }
- }
- else
- {
- spi2Recive[spi2Num] = spi2Temp;
- spi2Num++;
- if(spi2Num > 5)
- {
- spi2Num = 0;
- for(i = 0; i < 5; i++)
- printf("\r\nspi2recive[%d]: %x", i, spi2Recive[i]);
- // SPI_I2S_SendData(SPI2, 0x3a05);
- }
- }
- // printf("\r\nspirecive: %x", spi2Temp);
- printf("\r\nspi2Num: %d", spi2Num);
- }
串口法伤过来的数据:
spi2recive[0]: 3a05
spi2recive[1]: 3a05
spi2recive[2]: 3a05
spi2recive[3]: 3a05
spi2recive[4]: 3a05
spi2Num: 0
|