你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
OasisDong

OasisDong

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
5 回答

STM32F030C8T6 CUBEMX Hal库 SPI1 DMA发送完成标志怎么获取

STM32F0
衔胆栖冰 衔胆栖冰 回答时间: 2019-4-6 22:58

oasisdong 发表于 2019-3-26 08:21 之前用标准库函数是有DMA空闲中断的,stm32cubeMX 生成的Hal库 找不到了? ① /** * @brief This function handles DMA2 stream2 global interrupt. */ void DMA2_Stream2_IRQHandler(void) {   /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */   /* USER CODE END DMA2_Stream2_IRQn 0 */   HAL_DMA_IRQHandler(&hdma_spi1_rx);   /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */   /* USER CODE END DMA2_Stream2_IRQn 1 */ }复制代码 ②void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma): /* Transfer Complete Interrupt management ***********************************/   if ((tmpisr & (DMA_FLAG_TCIF0_4 << hdma->StreamIndex)) != RESET)   {     if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != RESET)     {       /* Clear the transfer complete flag */       regs->IFCR = DMA_FLAG_TCIF0_4 << hdma->StreamIndex;              if(HAL_DMA_STATE_ABORT == hdma->State)       {         /* Disable all the transfer interrupts */         hdma->Instance->CR  &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME);         hdma->Instance->FCR &= ~(DMA_IT_FE);                  if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL))         {           hdma->Instance->CR  &= ~(DMA_IT_HT);         }         /* Clear all interrupt flags at correct offset within the register */         regs->IFCR = 0x3FU << hdma->StreamIndex;         /* Process Unlocked */         __HAL_UNLOCK(hdma);         /* Change the DMA state */         hdma->State = HAL_DMA_STATE_READY;         if(hdma->XferAbortCallback != NULL)         {           hdma->XferAbortCallback(hdma);         }         return;       }       if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET)       {         /* Current memory buffer used is Memory 0 */         if((hdma->Instance->CR & DMA_SxCR_CT) == RESET)         {           if(hdma->XferM1CpltCallback != NULL)           {             /* Transfer complete Callback for memory1 */             hdma->XferM1CpltCallback(hdma);           }         }         /* Current memory buffer used is Memory 1 */         else         {           if(hdma->XferCpltCallback != NULL)           {             /* Transfer complete Callback for memory0 */             hdma->XferCpltCallback(hdma);           }         }       }       /* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */       else       {         if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET)         {           /* Disable the transfer complete interrupt */           hdma->Instance->CR  &= ~(DMA_IT_TC);           /* Process Unlocked */           __HAL_UNLOCK(hdma);           /* Change the DMA state */           hdma->State = HAL_DMA_STATE_READY;         }         if(hdma->XferCpltCallback != NULL)         {           /* Transfer complete callback */           hdma->XferCpltCallback(hdma);         }       }     }   }复制代码

赞0
1 回答

STM32F030C8T6 CUBEMX HAL库 串口DMA空闲中断找不到

STM32F0
OasisDong OasisDong 回答时间: 2019-3-29 15:13

////经摸索发现,STM32F030C8T6 串口1DMA发送完成中断 回调函数是这个 void HAL_UART_TxCpltCallback ( UART_HandleTypeDef* huart ) {         if ( huart->Instance == USART1 ) // 判断是由哪个串口触发的中断         {              ;         } }

赞0
0 回答

STM32F030C8T6 CUBEMX 生成串口中断接收问题

STM32F0
OasisDong OasisDong


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16