1 void SPIx_Init(void)
2 {
3 RCC-》APB2ENR|=1《《2; //PORTA时钟使能
4 RCC-》APB2ENR|=1《《12; //SPI1时钟使能
5
6 //这儿只针对SPI口初始化
7 GPIOA-》CRL&=0X000FFFFF;
8 GPIOA-》CRL|=0XBBB00000;//PA5.6.7复用推挽输出
9 //GPIOA-》ODR|=0X7《《5; //PA5.6.7上拉,应该不起作用,因为此形式
10 SPI1-》CR1&=~(1《《6);//封闭SPI来装备某些位
11
12 SPI1-》CR1&=~(1《《15);//1:双线双向形式 0:单向双向形式
13 SPI1-》CR1&=~(1《《13);//1:发动CRC校验 0:封闭CRC校验 只能在SPE=0时改写,不然犯错。只能在全双工形式运用
14 SPI1-》CR1|=0《《11;//1:16bit数据格式 0:8bit数据格式 只能在SPE=0时改写,不然犯错。
15 SPI1-》CR1|=0《《10;//1:全双工形式 0:只接纳形式
16 SPI1-》CR1|=1《《9; //1:启用软件从设备管理 0:制止软件从设备管理 当为1时,NSS电平由SSI位决议
17 SPI1-》CR1|=1《《8;//
18 SPI1-》CR1|=0《《7; //1:先发送MSB 0:先发送LSB
19 SPI1-》CR1|=0《《3//5~3bit:分频系数 0~7 分频系数为Fpclk/2、4、8、16、32、64、128、256
20 SPI1-》CR1|=1《《2;//1:主设备 0:从设备
21 SPI1-》CR1|=1《《1; //CPOL 1:空闲时SCK为1 0:空闲时SCK=0
22 SPI1-》CR1|=1《《0; //CPHA 1:数据采样从第二个时刻边缘开端 0:数据采样从第一个时钟边缘开端
23 SPI1-》CR1|=1《《6; //1:敞开SPI 0:封闭SPI
24 }