久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9863|回復: 1
收起左側

STM32 F4 SPI中斷接收不定長數據

[復制鏈接]
ID:309801 發表于 2018-5-28 16:50 | 顯示全部樓層 |閱讀模式
我用的軟件是STM32CUBUMX,用SPI1做從機,中斷接收數據,并在中斷中處理數據,然后通過SPI3(主機)將數據發送出去。問題是用串口看接收到了數據,用邏輯分析儀連接的主機,檢測不出數據,測試了幾次,覺得問題應該出現在中斷中,程序如下:

中斷:
/**
* @brief This function handles SPI1 global interrupt.
*/
void SPI1_IRQHandler(void)
{
  /* USER CODE BEGIN SPI1_IRQn 0 */
SpiReceive_RXNE(&hspi1);
  /* USER CODE END SPI1_IRQn 0 */
  HAL_SPI_IRQHandler(&hspi1);
  /* USER CODE BEGIN SPI1_IRQn 1 */
  /* USER CODE END SPI1_IRQn 1 */
}

void SpiReceive_RXNE(SPI_HandleTypeDef *hspi)  
{  
    uint32_t temp;  
  
  if((__HAL_SPI_GET_FLAG(hspi,SPI_FLAG_RXNE) == RESET))
  {   
    HAL_SPI_DMAStop(&hspi1);  
        temp = hspi1.hdmarx->Instance->NDTR;  
        SpiType1.rx_len =  receivelen - temp;   
    SpiType1.rec_flag=1;
    HAL_SPI_Receive_DMA(&hspi1,SpiType1.SPI_DMA_rxBuf,receivelen);   
}
}  

主程序:
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_SPI1_Init();
  MX_USART1_UART_Init();
  MX_SPI3_Init();
  /* USER CODE BEGIN 2 */

HAL_SPI_Receive_DMA(&hspi1,SpiType1.SPI_DMA_rxBuf,receivelen);  
  __HAL_SPI_ENABLE_IT(&hspi1, SPI_IT_RXNE);
  
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  
  /* USER CODE END WHILE */
  /* USER CODE BEGIN 3 */
if(SpiType1.rec_flag==1)
{
  SpiType1.rec_flag=0;  
  HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET);
  HAL_SPI_Transmit(&hspi3,SpiType1.SPI_DMA_rxBuf,SpiType1.rx_len,1000);
  HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);
}
/*printf("\n\r %d,%d,%d,%d,%d",SpiType1.SPI_DMA_rxBuf[0],SpiType1.SPI_DMA_rxBuf[1],SpiType1.SPI_DMA_rxBuf[2],SpiType1.SPI_DMA_rxBuf[3],SpiType1.SPI_DMA_rxBuf[4]);
HAL_Delay(500);*/
  }
  /* USER CODE END 3 */
}


SPI_FLAG_RXNE,它的標志位沒有清除,因為在庫函數中沒有清除這個標志位的函數,百度過,說可以把SPI_FLAG_RXNE改成SPI_FLAG_BSY,改后的數據也不對,邏輯分析儀上只能檢測出一個數據,是發送的最后一個數據。請問有什么辦法可以解決?感謝


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品区一区二区三区 | 亚洲成人中文字幕 | 欧美成人精品激情在线观看 | 久久国产婷婷国产香蕉 | 中国人pornoxxx麻豆 | 精品视频一区二区三区在线观看 | 999免费网站 | 欧美日韩在线免费观看 | 日本不卡一区二区三区在线观看 | 欧美中文字幕在线 | 欧洲成人 | 精品久久久久久久久久久久久久 | 国产精品福利网站 | 日韩亚洲一区二区 | 日韩欧美中文字幕在线观看 | 99热.com | 亚洲码欧美码一区二区三区 | 午夜精品视频在线观看 | 日本三级视频 | 谁有毛片| 亚洲精品电影在线观看 | 天色综合网 | 五月花丁香婷婷 | 毛片免费观看视频 | 亚洲视频一区 | 中文字幕 在线观看 | 另类一区 | 色综合一区二区 | 色欧美片视频在线观看 | 中国人pornoxxx麻豆 | 国产在线观看免费 | 激情五月婷婷在线 | 欧美一区二区三区在线 | 国产乱码精品一区二区三区av | 欧美日韩精品影院 | 特级做a爰片毛片免费看108 | 亚洲精品一区二区三区四区高清 | 国产精品自拍视频网站 | 99成人精品 | 成人片在线看 | 免费观看羞羞视频网站 |