在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);
}