ch432 与stm32 通信数据接收问题

上电后读 寄存器的值也不对,读函数如下,有什么问题嘛? u8 read_ch432data(u8 addr,u8 spi_scs) { u8 dat; addr<<=2; addr&=0xfd; start_spi(spi_scs); //选择相应片选 SPIx_ReadWriteByte(addr); dat=SPIx_ReadWriteByte(0xff); stop_scs(spi_scs); return dat; }

u8 SPIx_ReadWriteByte(u8 TxData) { u8 retry = 0; // while((SPI1->SR&(1<<1)) == 0) //等待发送区空 while(!(SPI1->SR & 0X0002)) { retry++; if(retry > 200) { return 0; } } SPI1->DR = TxData; //发送一个byte retry = 0; // while((SPI1->SR&1<<0) == 0) //等待接收完一个byte while(!(SPI1->SR & 0X0001)) { retry++; if(retry >200) { return 0; }

} return SPI1->DR; //返回接收到的数据 }

返回的值如果和芯片手册中的不一致的话,建议你查程序,这个一般就是程序的问题,另外,建议同样的问题,不要分几个帖子发,这样不利于问题的解决,最好还是在一个帖子里面解决。 程序中建议不要加超时,至少是现在调试的时候不要加。


谢谢 知道了 ,知道原因了 ,我用stm32时电压过大把gpio烧了 换了个口就好了 ,但我进中断后怎么一直在中断里,跳变成高电平时也还是不出来的 。


可能你对STM32还不是很熟悉,程序的问题还是要自己慢慢查一下了。


EN .没清楚 中断标志 位


只有登录才能回复,可以选择微信账号登录