本帖最后由 any012 于 2016-5-18 11:57 编辑 主设备连续发送4个16位的数据,第一个是0x3a05,于是想用这个数据来作为帧首判断,结果想在SPI中断里将串口接收到的数组发送出来,总是不成功。 于是精简了下函数,只发送spi2Num这个数,结果总是1... void SPI2_IRQHandler(void) { u8 spi2Num, i; u16 spi2Temp; spi2Temp = SPI_I2S_ReceiveData(SPI2); if(spi2Num == 0) { if(spi2Temp == 0x3a05) { spi2Num = 1; } } else { spi2Num++; if(spi2Num > 5) spi2Num = 0; } printf("\r\nspi2Num: %d", spi2Num); } 复制代码
再请教下,将spi2Num改成全局变量后,可以打印出spi2Recive[]数组了,但结果全是0x3a05.我用示波器观察了波形,主设备发送过来的数据只有第一个是0x3a05.
修改后的程序:
串口输出结果:
spi2recive[0]: 3a05
spi2recive[1]: 3a05
spi2recive[2]: 3a05
spi2recive[3]: 3a05
spi2recive[4]: 3a05
spi2Num: 0
编辑,回复错帖子了。