本帖最后由 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
编辑,回复错帖子了。