初级会员

- 积分
- 82
- 金钱
- 82
- 注册时间
- 2019-7-25
- 在线时间
- 18 小时
|
1金钱
在用STM32的SPI的时候,数据为什么没有办法写到DR寄存器里面啊
感觉自己SPI的配置也没有错啊,是哪里忘了配置了吗?
这是我初始化的代码:
void SPI1_Init()
{
GPIO_InitTypeDef GPIO_InitStu;
SPI_InitTypeDef SPI_InitStu;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开GPIO时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);//打开SPI1时钟使能
GPIO_InitStu.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStu.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//PA5,PA6,PA7复用推挽输出
GPIO_InitStu.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStu);
SPI_InitStu.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;//256分频
SPI_InitStu.SPI_CPHA=SPI_CPHA_1Edge;//第一个边沿采集数据,即上升沿
SPI_InitStu.SPI_CPOL=SPI_CPOL_Low;//未发送数据时为低电平
SPI_InitStu.SPI_CRCPolynomial=7;//CRC值计算的多项式
SPI_InitStu.SPI_DataSize=SPI_DataSize_8b;//每次发送8位数据
SPI_InitStu.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//串行发送数据
SPI_InitStu.SPI_FirstBit=SPI_FirstBit_MSB;//先发送高位
SPI_InitStu.SPI_Mode=SPI_Mode_Master;//做主机
SPI_InitStu.SPI_NSS=SPI_NSS_Soft;//NSS信号由软件控制
SPI_Init(SPI1,&SPI_InitStu);//SPI初始化
SPI_Cmd(SPI1,ENABLE);//使能SPI1
SPI_I2S_SendData(SPI1,0xff);
}
void SPI1_SendData(u8 dat)
{
u8 i;
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET)
{
i++;
if(i>250) return;
}
SPI_I2S_SendData(SPI1,dat);
i=0;
}
|
|
-
-
|