SPI_Init函数代码
时间: 2024-03-26 12:38:01 浏览: 273
SPI_Init函数是CMSIS库中的函数,用于初始化STM32的SPI外设。以下是SPI_Init函数的代码实现:
```c
void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct)
{
uint16_t tmpreg = 0;
/* 确保SPI外设处于空闲状态 */
SPIx->CR1 &= ~(SPI_CR1_SPE);
/* 配置SPI_CR1寄存器 */
tmpreg = SPIx->CR1;
tmpreg &= ~(SPI_CR1_BR | SPI_CR1_CPOL | SPI_CR1_CPHA | SPI_CR1_LSBFIRST | SPI_CR1_SSM | SPI_CR1_RXONLY | SPI_CR1_DFF | SPI_CR1_CRCEN);
tmpreg |= (SPI_InitStruct->SPI_Direction | SPI_InitStruct->SPI_Mode | SPI_InitStruct->SPI_DataSize | SPI_InitStruct->SPI_CPOL | SPI_InitStruct->SPI_CPHA | SPI_InitStruct->SPI_NSS | SPI_InitStruct->SPI_BaudRatePrescaler | SPI_CR1_SPE);
SPIx->CR1 = tmpreg;
/* 配置SPI_CR2寄存器 */
tmpreg = SPIx->CR2;
tmpreg &= ~(SPI_CR2_DS);
tmpreg |= (SPI_InitStruct->SPI_DataSize);
SPIx->CR2 = tmpreg;
}
```
在上述代码中,首先判断SPI外设是否处于空闲状态,然后根据用户定义的SPI_InitStruct配置SPI_CR1和SPI_CR2寄存器。其中,SPI_CR1寄存器包括了SPI的主从模式、数据大小、极性、相位、NSS软件管理、接收器模式、数据帧格式和CRC计算使能等配置信息;而SPI_CR2寄存器则包括了数据大小等信息。最后,使能SPI外设。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)