MCU是 GD32F103RCT6,启动文件是startup_gd32F01x_hd.s
/*************************************
名称:SPI3接口配置
功能:
参数:
************************************/
void SPI3_Configuration(void)
{
SPI_InitPara SPI_InitStructure;
RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_SPI3, ENABLE );
SPI_I2S_DeInit(SPI3);
SPI_InitStructure.SPI_TransType = SPI_TRANSTYPE_FULLDUPLEX;
SPI_InitStructure.SPI_Mode = SPI_MODE_MASTER;
SPI_InitStructure.SPI_FrameFormat = SPI_FRAMEFORMAT_8BIT;
SPI_InitStructure.SPI_SCKPL = SPI_SCKPL_HIGH;
SPI_InitStructure.SPI_SCKPH = SPI_SCKPH_2EDGE;
SPI_InitStructure.SPI_SWNSSEN = SPI_SWNSS_SOFT;
SPI_InitStructure.SPI_PSC = SPI_PSC_32;
SPI_InitStructure.SPI_FirstBit = SPI_FIRSTBIT_MSB;
SPI_InitStructure.SPI_CRCPOL = 7;
SPI_Init(SPI3, &SPI_InitStructure);
SPI_Enable(SPI3, ENABLE);
// MB85RS_ReadWriteByte(0x00); //0x00,0xff,0xaa都行
}
u8 MB85RS_ReadWriteByte(u8 TxData) //SPI 发送接收字节
{
while (SPI_I2S_GetBitState(SPI3, SPI_FLAG_TBE) == RESET){} //检查指定的SPI标志位设置与否:发送
SPI_I2S_SendData(SPI3, TxData); //通过外设SPIx发送一个数据
return 0 ;
}
SPI3_Configuration后反复调用MB85RS_ReadWriteByte,只有第一次while循环直接跳出继续执行SPI_I2S_SendData
后续调用一直我while循环不能跳出。
似乎SPI3并没有启动发送,一直处于发送状态位不为空(没有发送完成)。
这时应该和外设无关,纯粹GD32F103RC的内部关系。
谢谢! |