IO设置:
//********************** SPI2通信×××××××××××××××××××××××××××××××××××××××××××
GPIOB->CRH&=0X0F0FFFFF;
GPIOB->CRH|=0XB0B00000;//PB13,15.复用
GPIOB->ODR|=0X5<<13; //PB13,15上拉
SPI初始化:
//SPI2初始化 , 主模式,只发送,PB15->SIMO, 

B13->CLK
void SPI2_Init(void)
{
RCC->APB1ENR|=1<<14; //SPI2时钟使能
SPI2->CR1&=~(1<<0); //数据采样从第二个时间边沿开始,CPHA=0
SPI2->CR1&=~(1<<1); //空闲模式下SCK为0 CPOL=0
SPI2->CR1|=1<<2; //配置为主设备
SPI2->CR1|=6<<3; //波特率设置,Fsck=Fcpu/256 281K
SPI2->CR1&=~(1<<7); //MSBfirst
SPI2->CR1|=1<<9; //软件nss管理
SPI2->CR1|=1<<8;
SPI2->CR1&=~(1<<10); //全双工模式 , 发送和接收
SPI2->CR1&=~(1<<11); //8bit数据格式
SPI2->CR1&=~(1<<12); //下个发送值来自发送缓冲
SPI2->CR1&=~(1<<15); //单线双向
SPI2->CR1|=1<<14; //只发模式
SPI2->CR1|=1<<6; //SPI设备使能
// SPIx_ReadWriteByte(0xff);//启动传输
}
但是运行的时候,SPI2的缓冲器时钟是0x00FF, 用中断看了,给SPI2_DR赋不了值。
下面是赋值后SPI2的状态:
各位兄弟帮忙看看什么问题,谢谢!