请问哈我用ch432T 与stm32103rb 进行串口通信时,我对432的DLM设置为0x30,但我读时却为0x20了?为什么呢

我进了中断后就出不来了 。。
我再上电后读取 寄存器的值,寄存器中的值也不对,我的读函数是否有问题?
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; //返回接收到的数据

}

问题严重,我用F407。出现写入配置后,读出数据不一致。我是写数据不成。
关于读写程序:
①文档原话:串口寄存器在上电复位或者串口软复位之后的默认值。
我通过断电,上电,直接读取地址,0-7的数据。IIR、LSR对的上号。和上面读程序一样的。
②单片机的SPI模式,SPI_CPOL = SPI_CPOL_High,SPI_CPHA = SPI_CPHA_2Edge。
③假定读数据对,那么写为什么不对。我卡在这里,十分困惑。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜