- 打卡等级:偶尔看看III
- 打卡总天数:31
- 最近打卡:2025-03-31 16:46:26
中级会员
- 积分
- 220
|
以下是:STM32库函数摘录出来的SPI读写和发送BUF的函数,不知道怎么把STC8H1K08的SPI改成类似一样的?
/******************************************************************************/
u8 SPI1_ReadWriteByte(u8 TxByte)
{
while( SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); //当发送buffer为空时(说明上一次数据已复制到移位寄存器中)退出,这时可以往buffer里面写数据
SPI_SendData8(SPI1,TxByte);
while( SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //当接收buffer为非空时退出
return SPI_ReceiveData8(SPI1);
}
/******************************************************************************/
void SPI1_SendBuf(u8 *txBuffer, u16 Length)
{
u16 i;
for(i=0;i<Length;i++)
{
while( SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); //当发送buffer为空时(说明上一次数据已复制到移位寄存器中)退出,这时可以往buffer里面写数据
SPI_SendData8(SPI1, txBuffer[i]);
while( SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //当接收buffer为非空时退出
SPI_ReceiveData8(SPI1);
}
}
/******************************************************************************/
STC8H1K08的库函数版本是:STC8G-STC8H-LIB-DEMO-CODE-20200918,我在里面找不到SPI函数。
在例程里面有个SPI函数,但是没有类似SPI_ReceiveData8读数据的函数,我直接改成如下:
/******************************************************************************/
u8 SPI_WriteByte(u8 TxData) //SPI发送一个字节数据
{
SPSTAT = SPIF + WCOL; //清0 SPIF和WCOL标志
SPDAT = TxData;
B_SPI_Busy = 1;
while(B_SPI_Busy) ;
return SPDAT;
}
/******************************************************************************/
void SPI_SendBuf(u8 * txBuffer, u16 lenth)
{
u8 i=0;
for(i=0;i<lenth;i++)
{
SPSTAT = SPIF + WCOL; //清0 SPIF和WCOL标志
SPDAT = txBuffer[i];
B_SPI_Busy = 1;
while(B_SPI_Busy) ;
}
}
/******************************************************************************/
void SPI_Transivion (void) interrupt SPI_VECTOR
{
B_SPI_Busy = 0;
SPSTAT = SPIF + WCOL; //清0 SPIF和WCOL标志
}
/******************************************************************************/
程序编译通过,但是没有达到和STM32的功能,原板子用是STM32,想换成STC8.
|
|