在STM32F103上使用CUBEMX生成的HAL库函数测试SPI失败求解

在STM32F103上使用CUBEMX生成的HAL库函数上使用串口没问题,我用的中断发送和接收
现在我需要把串口中接收到的数据通过SPI1发送给SPI2,SPI2接收到以后,使用串口再发送出去 通过串口助手来完成
串口部分没问题了,SPI1发送也没问题,SPI2接收时无论我怎么修改调试,只能收到1个字节,其余都是0

请问这是怎么回事呢
main中的部分


  /* USER CODE BEGIN 2 */

    HAL_UART_Receive_IT(&huart1,tempRx, 1);
    
//    uint8_t SIGN=0;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */

  while (1)
  {

        // 检测是否超时

        // 
    if(POSITION > 0 && HAL_GetTick()-time>300)
    {

            // 数据从SPI1发出 
            HAL_SPI_Transmit(&hspi1,USERbuffer,POSITION,100);
            // SPI2接收
            HAL_SPI_Receive_IT(&hspi2,SPIRXBUF,1);
        
            HAL_UART_Transmit_IT(&huart1, &USER_SPI_BUF[0], POSITION);

        POSITION=0;
        SPI_POSITION=0;
    }
    
}


回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
            //计算接收长度
//        RxCount = huart1.RxXferSize-huart1.RxXferCount;
            //存储缓冲区数据
        memcpy(&USERbuffer[POSITION],tempRx,1);
            //更新存储位置
        POSITION=POSITION+1;
//            //清空接收缓冲区
//        huart1.RxXferCount=huart1.RxXferSize; 
        
        HAL_UART_Receive_IT(&huart1,tempRx,1);
}

void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
{
        memcpy(&USER_SPI_BUF[SPI_POSITION],SPIRXBUF,1);
    
        SPI_POSITION=SPI_POSITION+1;

        HAL_SPI_Receive_IT(&hspi2,SPIRXBUF,1);
    }


SPI1和SPI2怎么可能同时用???
spi1触发中断发送,会抢占spi2的中断。这个是中断优先级!