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 }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)