SPI_HandleTypeDef SPI2_Handler;
void SPI2_Init(void)
{
SPI2_Handler.Instance=SPI2;
SPI2_Handler.Init.Mode=SPI_MODE_MASTER;
SPI2_Handler.Init.Direction=SPI_DIRECTION_2LINES;
SPI2_Handler.Init.DataSize=SPI_DATASIZE_8BIT;
SPI2_Handler.Init.CLKPolarity=SPI_POLARITY_LOW;/////要改!,RC222是LOW.
SPI2_Handler.Init.CLKPhase=SPI_PHASE_1EDGE;//待定,不是改不改。视频17:13.
SPI2_Handler.Init.NSS=SPI_NSS_SOFT;//片选软件管理
SPI2_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8;//待定.或者8
SPI2_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB;//待定.
SPI2_Handler.Init.TIMode=SPI_TIMODE_DISABLE;//待定.
SPI2_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;//待定.
SPI2_Handler.Init.CRCPolynomial=7;//待定.
HAL_SPI_Init(&SPI2_Handler);
__HAL_SPI_ENABLE(&SPI2_Handler);
SPI2_ReadWriteByte(0xff);
}
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)//回调映射函数
{
GPIO_InitTypeDef GPIO_Initure;
if(hspi->Instance==SPI2)//如果是串口1,进行串口1 MSP初始化
{
__HAL_RCC_GPIOB_CLK_ENABLE(); //使能GPIOA时钟
__HAL_RCC_SPI2_CLK_ENABLE(); //使能USART1时钟
GPIO_Initure.Pin=GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15; //PB7.8.9
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FAST; //高速
GPIO_Initure.Alternate=GPIO_AF5_SPI2; //复用为SPI2
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //初始化PB7.8.9
} |