stm32 SPI的从机中断接收

先放上代码:

    hspi1.Instance = SPI1;
    hspi1.Init.Mode = SPI_MODE_SLAVE;
    hspi1.Init.Direction = SPI_DIRECTION_2LINES;
    hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
    hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
    hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
    hspi1.Init.NSS = SPI_NSS_SOFT;//SPI_NSS_HARD_OUTPUT;
//    hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
    hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
    hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
    hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
    hspi1.Init.CRCPolynomial = 7;
    hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
    hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;

    if(HAL_SPI_Init(&hspi1) != HAL_OK) {
        _Error_Handler(__FILE__, __LINE__);
    }
		
	HAL_SPI_Receive_IT(&hspi1, receive_data, 162);




void SPI1_IRQHandler(void)
{



  HAL_SPI_IRQHandler(&hspi1);
	
	
HAL_SPI_Receive_IT(&hspi1, receive_data, 162);



}

笔者是采用这个代码进行SPI持续接收的,将中断接收函数放在SPI_RxISR_8BIT90函数下的SPI1_RxCpltCallback()中时,会丢包,所以没有采用。

你可能感兴趣的:(stm32,spi)