1 void SPIx_Init(void)
2 {
3 RCC->APB2ENR|=1<<2; //PORTA時(shí)鐘使能
4 RCC->APB2ENR|=1<<12; //SPI1時(shí)鐘使能
5
6 //這里只針對(duì)SPI口初始化
7 GPIOA->CRL&=0X000FFFFF;
8 GPIOA->CRL|=0XBBB00000;//PA5.6.7復(fù)用推挽輸出
9 //GPIOA->ODR|=0X7<<5; //PA5.6.7上拉,應(yīng)該不起作用,因?yàn)榇四J?/p>
10 SPI1->CR1&=~(1<<6);//關(guān)閉SPI來(lái)配置某些位
11
12 SPI1->CR1&=~(1<<15);//1:雙線雙向模式 0:單向雙向模式
13 SPI1->CR1&=~(1<<13);//1:啟動(dòng)CRC校驗(yàn) 0:關(guān)閉CRC校驗(yàn) 只能在SPE=0時(shí)改寫(xiě),否則出錯(cuò)。只能在全雙工模式使用
14 SPI1->CR1|=0<<11;//1:16bit數(shù)據(jù)格式 0:8bit數(shù)據(jù)格式 只能在SPE=0時(shí)改寫(xiě),否則出錯(cuò)。
15 SPI1->CR1|=0<<10;//1:全雙工模式 0:只接收模式
16 SPI1->CR1|=1<<9; //1:?jiǎn)⒂密浖脑O(shè)備管理 0:禁止軟件從設(shè)備管理 當(dāng)為1時(shí),NSS電平由SSI位決定
17 SPI1->CR1|=1<<8;//
18 SPI1->CR1|=0<<7; //1:先發(fā)送MSB 0:先發(fā)送LSB
19 SPI1->CR1|=0<<3//5~3bit:分頻系數(shù) 0~7 分頻系數(shù)為Fpclk/2、4、8、16、32、64、128、256
20 SPI1->CR1|=1<<2;//1:主設(shè)備 0:從設(shè)備
21 SPI1->CR1|=1<<1; //CPOL 1:空閑時(shí)SCK為1 0:空閑時(shí)SCK=0
22 SPI1->CR1|=1<<0; //CPHA 1:數(shù)據(jù)采樣從第二個(gè)時(shí)間邊沿開(kāi)始 0:數(shù)據(jù)采樣從第一個(gè)時(shí)鐘邊沿開(kāi)始
23 SPI1->CR1|=1<<6; //1:開(kāi)啟SPI 0:關(guān)閉SPI
24 }