小弟stm8新手一个,刚上手几天,遇到一个问题:
#define SPI_MOSI PB_ODR_ODR3 //设置推挽输出
void SPI_WriteByte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
SPI_MOSI=(byte&0x80); //write byte,send MSB bit
SPI_CLK=1;
Delay_us(20);
SPI_CLK=0;
byte=(byte<<1);
Delay_us(20);
}
}
如果这样设置的话,SPI_MOSI会一直低电平
void SPI_WriteByte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
if(byte&0x80)
{
SPI_MOSI=1;
}
else
{
SPI_MOSI=0;
}
SPI_CLK=1;
Delay_us(20);
SPI_CLK=0;
byte=(byte<<1);
Delay_us(20);
}
}
这样设置就正常了,但是我用其他MCU设置,第一个例子没问题呢,现在还不知道具体问题所在,估计是我没定义好,现在只能用下面的程序先用着,那个大哥说说是哪里问题。 |