之前能过flash空闲等待,然后我改了用内部8m频率,spi分频/8.就一直死在空闲等待。我再恢复到72mhz,spi/256,还是无法通过空闲等待。而且之前能过,但是每复位一次后数码管显示的值都不同,是随机的。我用的学习板,,中间没触头,没有接触不良问题啊。
以下是spi初始化:
void init_spi2()
{
//RCC->APB2ENR|=(1<<8)|0X01;//不是使用了复用功能就要开afio时钟!!!
RCC->APB2ENR|=(1<<8)|(1<<3);//开pg、pb口通用时钟
GPIOG->CRH|=0X00300000;//pg13(cs)为普通推挽输出,50mhz
flash_cs_1;
GPIOB->CRH|=0XBbB00000;//pb13(sck)、15(mosi)为复用io推挽输出,50mhz,pb14为复用推挽输出(miso)
RCC->APB1ENR|=(1<<14);//开spi2时钟
SPI2->CR1|=(0x07<<3);//时钟分频/256
SPI2->CR1|=(1<<1)|0X01;//时钟极性1,相位1
SPI2->CR1|=(1<<2);//配置为主模式
SPI2->CR1&=~(1<<15|1<<11|1<<10|1<<7);//双线双向,8位数据,全双工,msb先发送
SPI2->CR1|=(1<<9);//软件nss管理
SPI2->CR1|=(1<<8);
SPI2->CR1|=(1<<6);//开启spi模块
}
以下是spi初始化:
void init_spi2()
{
//RCC->APB2ENR|=(1<<8)|0X01;//不是使用了复用功能就要开afio时钟!!!
RCC->APB2ENR|=(1<<8)|(1<<3);//开pg、pb口通用时钟
GPIOG->CRH|=0X00300000;//pg13(cs)为普通推挽输出,50mhz
flash_cs_1;
GPIOB->CRH|=0XBbB00000;//pb13(sck)、15(mosi)为复用io推挽输出,50mhz,pb14为复用推挽输出(miso)
RCC->APB1ENR|=(1<<14);//开spi2时钟
SPI2->CR1|=(0x07<<3);//时钟分频/256
SPI2->CR1|=(1<<1)|0X01;//时钟极性1,相位1
SPI2->CR1|=(1<<2);//配置为主模式
SPI2->CR1&=~(1<<15|1<<11|1<<10|1<<7);//双线双向,8位数据,全双工,msb先发送
SPI2->CR1|=(1<<9);//软件nss管理
SPI2->CR1|=(1<<8);
SPI2->CR1|=(1<<6);//开启spi模块
}