本文共 1413 字,大约阅读时间需要 4 分钟。
SPI从机接受接收中断配置
SPI_HandleTypeDef SPI2_Handler; //SPI2句柄uint8_t receive_byte; //SPI口初始化void SPI2_Init(void){ SPI2_Handler.Instance=SPI2; //SPI2 SPI2_Handler.Init.Mode=SPI_MODE_SLAVE; //设置SPI工作模式,设置为主模式 SPI2_Handler.Init.Direction=SPI_DIRECTION_2LINES; //设置SPI单向或者双向 SPI2_Handler.Init.DataSize=SPI_DATASIZE_8BIT; //设置SPI的数据大小 SPI2_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH; //串行同步时钟的空闲状态为高电平 SPI2_Handler.Init.CLKPhase=SPI_PHASE_2EDGE; //串行同步时钟的第二个跳变沿( SPI2_Handler.Init.NSS=SPI_NSS_SOFT; //NSS信号由硬件(NSS管脚) SPI2_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2;//定义波特率预分频的值 SPI2_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB; //指定数据传输从MSB位还是LSB位 SPI2_Handler.Init.TIMode=SPI_TIMODE_DISABLE; //关闭TI模式 SPI2_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;//关闭硬件CRC校验 SPI2_Handler.Init.CRCPolynomial=7; //CRC值计算的多项式 HAL_SPI_Init(&SPI2_Handler);//初始化 //SPI2_ReadWriteByte(0Xff); //启动传输 HAL_SPI_Receive_IT(&SPI2_Handler, &receive_byte, 1); HAL_NVIC_SetPriority(SPI2_IRQn, 2, 0); HAL_NVIC_EnableIRQ(SPI2_IRQn); __HAL_SPI_ENABLE(&SPI2_Handler); //使能SPI }/*** @brief This function handles SPI2 global interrupt.*/void SPI2_IRQHandler(void){ HAL_SPI_IRQHandler(&SPI2_Handler); HAL_SPI_Receive_IT(&SPI2_Handler, &receive_byte, 1);}
转载地址:http://jfsrf.baihongyu.com/