⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_dma.c

📁 STM32 库文件
💻 C
📖 第 1 页 / 共 2 页
字号:
uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx)
{
  /* Check the parameters */
  assert_param(IS_DMA_ALL_PERIPH(DMAy_Channelx));
  /* Return the number of remaining data units for DMAy Channelx */
  return ((uint16_t)(DMAy_Channelx->CNDTR));
}

/**
  * @brief  Checks whether the specified DMAy Channelx flag is set or not.
  * @param DMA_FLAG: specifies the flag to check.
  *   This parameter can be one of the following values:
  * @arg DMA1_FLAG_GL1: DMA1 Channel1 global flag.
  * @arg DMA1_FLAG_TC1: DMA1 Channel1 transfer complete flag.
  * @arg DMA1_FLAG_HT1: DMA1 Channel1 half transfer flag.
  * @arg DMA1_FLAG_TE1: DMA1 Channel1 transfer error flag.
  * @arg DMA1_FLAG_GL2: DMA1 Channel2 global flag.
  * @arg DMA1_FLAG_TC2: DMA1 Channel2 transfer complete flag.
  * @arg DMA1_FLAG_HT2: DMA1 Channel2 half transfer flag.
  * @arg DMA1_FLAG_TE2: DMA1 Channel2 transfer error flag.
  * @arg DMA1_FLAG_GL3: DMA1 Channel3 global flag.
  * @arg DMA1_FLAG_TC3: DMA1 Channel3 transfer complete flag.
  * @arg DMA1_FLAG_HT3: DMA1 Channel3 half transfer flag.
  * @arg DMA1_FLAG_TE3: DMA1 Channel3 transfer error flag.
  * @arg DMA1_FLAG_GL4: DMA1 Channel4 global flag.
  * @arg DMA1_FLAG_TC4: DMA1 Channel4 transfer complete flag.
  * @arg DMA1_FLAG_HT4: DMA1 Channel4 half transfer flag.
  * @arg DMA1_FLAG_TE4: DMA1 Channel4 transfer error flag.
  * @arg DMA1_FLAG_GL5: DMA1 Channel5 global flag.
  * @arg DMA1_FLAG_TC5: DMA1 Channel5 transfer complete flag.
  * @arg DMA1_FLAG_HT5: DMA1 Channel5 half transfer flag.
  * @arg DMA1_FLAG_TE5: DMA1 Channel5 transfer error flag.
  * @arg DMA1_FLAG_GL6: DMA1 Channel6 global flag.
  * @arg DMA1_FLAG_TC6: DMA1 Channel6 transfer complete flag.
  * @arg DMA1_FLAG_HT6: DMA1 Channel6 half transfer flag.
  * @arg DMA1_FLAG_TE6: DMA1 Channel6 transfer error flag.
  * @arg DMA1_FLAG_GL7: DMA1 Channel7 global flag.
  * @arg DMA1_FLAG_TC7: DMA1 Channel7 transfer complete flag.
  * @arg DMA1_FLAG_HT7: DMA1 Channel7 half transfer flag.
  * @arg DMA1_FLAG_TE7: DMA1 Channel7 transfer error flag.
  * @arg DMA2_FLAG_GL1: DMA2 Channel1 global flag.
  * @arg DMA2_FLAG_TC1: DMA2 Channel1 transfer complete flag.
  * @arg DMA2_FLAG_HT1: DMA2 Channel1 half transfer flag.
  * @arg DMA2_FLAG_TE1: DMA2 Channel1 transfer error flag.
  * @arg DMA2_FLAG_GL2: DMA2 Channel2 global flag.
  * @arg DMA2_FLAG_TC2: DMA2 Channel2 transfer complete flag.
  * @arg DMA2_FLAG_HT2: DMA2 Channel2 half transfer flag.
  * @arg DMA2_FLAG_TE2: DMA2 Channel2 transfer error flag.
  * @arg DMA2_FLAG_GL3: DMA2 Channel3 global flag.
  * @arg DMA2_FLAG_TC3: DMA2 Channel3 transfer complete flag.
  * @arg DMA2_FLAG_HT3: DMA2 Channel3 half transfer flag.
  * @arg DMA2_FLAG_TE3: DMA2 Channel3 transfer error flag.
  * @arg DMA2_FLAG_GL4: DMA2 Channel4 global flag.
  * @arg DMA2_FLAG_TC4: DMA2 Channel4 transfer complete flag.
  * @arg DMA2_FLAG_HT4: DMA2 Channel4 half transfer flag.
  * @arg DMA2_FLAG_TE4: DMA2 Channel4 transfer error flag.
  * @arg DMA2_FLAG_GL5: DMA2 Channel5 global flag.
  * @arg DMA2_FLAG_TC5: DMA2 Channel5 transfer complete flag.
  * @arg DMA2_FLAG_HT5: DMA2 Channel5 half transfer flag.
  * @arg DMA2_FLAG_TE5: DMA2 Channel5 transfer error flag.
  * @retval : The new state of DMA_FLAG (SET or RESET).
  */
FlagStatus DMA_GetFlagStatus(uint32_t DMA_FLAG)
{
  FlagStatus bitstatus = RESET;
  uint32_t tmpreg = 0;
  /* Check the parameters */
  assert_param(IS_DMA_GET_FLAG(DMA_FLAG));
  /* Calculate the used DMA */
  if ((DMA_FLAG & FLAG_Mask) != (uint32_t)RESET)
  {
    /* Get DMA2 ISR register value */
    tmpreg = DMA2->ISR ;
  }
  else
  {
    /* Get DMA1 ISR register value */
    tmpreg = DMA1->ISR ;
  }
  /* Check the status of the specified DMA flag */
  if ((tmpreg & DMA_FLAG) != (uint32_t)RESET)
  {
    /* DMA_FLAG is set */
    bitstatus = SET;
  }
  else
  {
    /* DMA_FLAG is reset */
    bitstatus = RESET;
  }
  
  /* Return the DMA_FLAG status */
  return  bitstatus;
}

/**
  * @brief  Clears the DMAy Channelx's pending flags.
  * @param DMA_FLAG: specifies the flag to clear.
  *   This parameter can be any combination (for the same DMA) of 
  *   the following values:
  * @arg DMA1_FLAG_GL1: DMA1 Channel1 global flag.
  * @arg DMA1_FLAG_TC1: DMA1 Channel1 transfer complete flag.
  * @arg DMA1_FLAG_HT1: DMA1 Channel1 half transfer flag.
  * @arg DMA1_FLAG_TE1: DMA1 Channel1 transfer error flag.
  * @arg DMA1_FLAG_GL2: DMA1 Channel2 global flag.
  * @arg DMA1_FLAG_TC2: DMA1 Channel2 transfer complete flag.
  * @arg DMA1_FLAG_HT2: DMA1 Channel2 half transfer flag.
  * @arg DMA1_FLAG_TE2: DMA1 Channel2 transfer error flag.
  * @arg DMA1_FLAG_GL3: DMA1 Channel3 global flag.
  * @arg DMA1_FLAG_TC3: DMA1 Channel3 transfer complete flag.
  * @arg DMA1_FLAG_HT3: DMA1 Channel3 half transfer flag.
  * @arg DMA1_FLAG_TE3: DMA1 Channel3 transfer error flag.
  * @arg DMA1_FLAG_GL4: DMA1 Channel4 global flag.
  * @arg DMA1_FLAG_TC4: DMA1 Channel4 transfer complete flag.
  * @arg DMA1_FLAG_HT4: DMA1 Channel4 half transfer flag.
  * @arg DMA1_FLAG_TE4: DMA1 Channel4 transfer error flag.
  * @arg DMA1_FLAG_GL5: DMA1 Channel5 global flag.
  * @arg DMA1_FLAG_TC5: DMA1 Channel5 transfer complete flag.
  * @arg DMA1_FLAG_HT5: DMA1 Channel5 half transfer flag.
  * @arg DMA1_FLAG_TE5: DMA1 Channel5 transfer error flag.
  * @arg DMA1_FLAG_GL6: DMA1 Channel6 global flag.
  * @arg DMA1_FLAG_TC6: DMA1 Channel6 transfer complete flag.
  * @arg DMA1_FLAG_HT6: DMA1 Channel6 half transfer flag.
  * @arg DMA1_FLAG_TE6: DMA1 Channel6 transfer error flag.
  * @arg DMA1_FLAG_GL7: DMA1 Channel7 global flag.
  * @arg DMA1_FLAG_TC7: DMA1 Channel7 transfer complete flag.
  * @arg DMA1_FLAG_HT7: DMA1 Channel7 half transfer flag.
  * @arg DMA1_FLAG_TE7: DMA1 Channel7 transfer error flag.
  * @arg DMA2_FLAG_GL1: DMA2 Channel1 global flag.
  * @arg DMA2_FLAG_TC1: DMA2 Channel1 transfer complete flag.
  * @arg DMA2_FLAG_HT1: DMA2 Channel1 half transfer flag.
  * @arg DMA2_FLAG_TE1: DMA2 Channel1 transfer error flag.
  * @arg DMA2_FLAG_GL2: DMA2 Channel2 global flag.
  * @arg DMA2_FLAG_TC2: DMA2 Channel2 transfer complete flag.
  * @arg DMA2_FLAG_HT2: DMA2 Channel2 half transfer flag.
  * @arg DMA2_FLAG_TE2: DMA2 Channel2 transfer error flag.
  * @arg DMA2_FLAG_GL3: DMA2 Channel3 global flag.
  * @arg DMA2_FLAG_TC3: DMA2 Channel3 transfer complete flag.
  * @arg DMA2_FLAG_HT3: DMA2 Channel3 half transfer flag.
  * @arg DMA2_FLAG_TE3: DMA2 Channel3 transfer error flag.
  * @arg DMA2_FLAG_GL4: DMA2 Channel4 global flag.
  * @arg DMA2_FLAG_TC4: DMA2 Channel4 transfer complete flag.
  * @arg DMA2_FLAG_HT4: DMA2 Channel4 half transfer flag.
  * @arg DMA2_FLAG_TE4: DMA2 Channel4 transfer error flag.
  * @arg DMA2_FLAG_GL5: DMA2 Channel5 global flag.
  * @arg DMA2_FLAG_TC5: DMA2 Channel5 transfer complete flag.
  * @arg DMA2_FLAG_HT5: DMA2 Channel5 half transfer flag.
  * @arg DMA2_FLAG_TE5: DMA2 Channel5 transfer error flag.
  * @retval : None
  */
void DMA_ClearFlag(uint32_t DMA_FLAG)
{
  /* Check the parameters */
  assert_param(IS_DMA_CLEAR_FLAG(DMA_FLAG));
  /* Calculate the used DMA */
  if ((DMA_FLAG & FLAG_Mask) != (uint32_t)RESET)
  {
    /* Clear the selected DMA flags */
    DMA2->IFCR = DMA_FLAG;
  }
  else
  {
    /* Clear the selected DMA flags */
    DMA1->IFCR = DMA_FLAG;
  }
}

/**
  * @brief  Checks whether the specified DMAy Channelx interrupt has 
  *   occurred or not.
  * @param DMA_IT: specifies the DMA interrupt source to check. 
  *   This parameter can be one of the following values:
  * @arg DMA1_IT_GL1: DMA1 Channel1 global interrupt.
  * @arg DMA1_IT_TC1: DMA1 Channel1 transfer complete interrupt.
  * @arg DMA1_IT_HT1: DMA1 Channel1 half transfer interrupt.
  * @arg DMA1_IT_TE1: DMA1 Channel1 transfer error interrupt.
  * @arg DMA1_IT_GL2: DMA1 Channel2 global interrupt.
  * @arg DMA1_IT_TC2: DMA1 Channel2 transfer complete interrupt.
  * @arg DMA1_IT_HT2: DMA1 Channel2 half transfer interrupt.
  * @arg DMA1_IT_TE2: DMA1 Channel2 transfer error interrupt.
  * @arg DMA1_IT_GL3: DMA1 Channel3 global interrupt.
  * @arg DMA1_IT_TC3: DMA1 Channel3 transfer complete interrupt.
  * @arg DMA1_IT_HT3: DMA1 Channel3 half transfer interrupt.
  * @arg DMA1_IT_TE3: DMA1 Channel3 transfer error interrupt.
  * @arg DMA1_IT_GL4: DMA1 Channel4 global interrupt.
  * @arg DMA1_IT_TC4: DMA1 Channel4 transfer complete interrupt.
  * @arg DMA1_IT_HT4: DMA1 Channel4 half transfer interrupt.
  * @arg DMA1_IT_TE4: DMA1 Channel4 transfer error interrupt.
  * @arg DMA1_IT_GL5: DMA1 Channel5 global interrupt.
  * @arg DMA1_IT_TC5: DMA1 Channel5 transfer complete interrupt.
  * @arg DMA1_IT_HT5: DMA1 Channel5 half transfer interrupt.
  * @arg DMA1_IT_TE5: DMA1 Channel5 transfer error interrupt.
  * @arg DMA1_IT_GL6: DMA1 Channel6 global interrupt.
  * @arg DMA1_IT_TC6: DMA1 Channel6 transfer complete interrupt.
  * @arg DMA1_IT_HT6: DMA1 Channel6 half transfer interrupt.
  * @arg DMA1_IT_TE6: DMA1 Channel6 transfer error interrupt.
  * @arg DMA1_IT_GL7: DMA1 Channel7 global interrupt.
  * @arg DMA1_IT_TC7: DMA1 Channel7 transfer complete interrupt.
  * @arg DMA1_IT_HT7: DMA1 Channel7 half transfer interrupt.
  * @arg DMA1_IT_TE7: DMA1 Channel7 transfer error interrupt.
  * @arg DMA2_IT_GL1: DMA2 Channel1 global interrupt.
  * @arg DMA2_IT_TC1: DMA2 Channel1 transfer complete interrupt.
  * @arg DMA2_IT_HT1: DMA2 Channel1 half transfer interrupt.
  * @arg DMA2_IT_TE1: DMA2 Channel1 transfer error interrupt.
  * @arg DMA2_IT_GL2: DMA2 Channel2 global interrupt.
  * @arg DMA2_IT_TC2: DMA2 Channel2 transfer complete interrupt.
  * @arg DMA2_IT_HT2: DMA2 Channel2 half transfer interrupt.
  * @arg DMA2_IT_TE2: DMA2 Channel2 transfer error interrupt.
  * @arg DMA2_IT_GL3: DMA2 Channel3 global interrupt.
  * @arg DMA2_IT_TC3: DMA2 Channel3 transfer complete interrupt.
  * @arg DMA2_IT_HT3: DMA2 Channel3 half transfer interrupt.
  * @arg DMA2_IT_TE3: DMA2 Channel3 transfer error interrupt.
  * @arg DMA2_IT_GL4: DMA2 Channel4 global interrupt.
  * @arg DMA2_IT_TC4: DMA2 Channel4 transfer complete interrupt.
  * @arg DMA2_IT_HT4: DMA2 Channel4 half transfer interrupt.
  * @arg DMA2_IT_TE4: DMA2 Channel4 transfer error interrupt.
  * @arg DMA2_IT_GL5: DMA2 Channel5 global interrupt.
  * @arg DMA2_IT_TC5: DMA2 Channel5 transfer complete interrupt.
  * @arg DMA2_IT_HT5: DMA2 Channel5 half transfer interrupt.
  * @arg DMA2_IT_TE5: DMA2 Channel5 transfer error interrupt.
  * @retval : The new state of DMA_IT (SET or RESET).
  */
ITStatus DMA_GetITStatus(uint32_t DMA_IT)
{
  ITStatus bitstatus = RESET;
  uint32_t tmpreg = 0;
  /* Check the parameters */
  assert_param(IS_DMA_GET_IT(DMA_IT));
  /* Calculate the used DMA */
  if ((DMA_IT & FLAG_Mask) != (uint32_t)RESET)
  {
    /* Get DMA2 ISR register value */
    tmpreg = DMA2->ISR ;
  }
  else
  {
    /* Get DMA1 ISR register value */
    tmpreg = DMA1->ISR ;
  }
  /* Check the status of the specified DMA interrupt */
  if ((tmpreg & DMA_IT) != (uint32_t)RESET)
  {
    /* DMA_IT is set */
    bitstatus = SET;
  }
  else
  {
    /* DMA_IT is reset */
    bitstatus = RESET;
  }
  /* Return the DMA_IT status */
  return  bitstatus;
}

/**
  * @brief  Clears the DMAy Channelx抯 interrupt pending bits.
  * @param DMA_IT: specifies the DMA interrupt pending bit to clear.
  *   This parameter can be any combination (for the same DMA) of
  *   the following values:
  * @arg DMA1_IT_GL1: DMA1 Channel1 global interrupt.
  * @arg DMA1_IT_TC1: DMA1 Channel1 transfer complete interrupt.
  * @arg DMA1_IT_HT1: DMA1 Channel1 half transfer interrupt.
  * @arg DMA1_IT_TE1: DMA1 Channel1 transfer error interrupt.
  * @arg DMA1_IT_GL2: DMA1 Channel2 global interrupt.
  * @arg DMA1_IT_TC2: DMA1 Channel2 transfer complete interrupt.
  * @arg DMA1_IT_HT2: DMA1 Channel2 half transfer interrupt.
  * @arg DMA1_IT_TE2: DMA1 Channel2 transfer error interrupt.
  * @arg DMA1_IT_GL3: DMA1 Channel3 global interrupt.
  * @arg DMA1_IT_TC3: DMA1 Channel3 transfer complete interrupt.
  * @arg DMA1_IT_HT3: DMA1 Channel3 half transfer interrupt.
  * @arg DMA1_IT_TE3: DMA1 Channel3 transfer error interrupt.
  * @arg DMA1_IT_GL4: DMA1 Channel4 global interrupt.
  * @arg DMA1_IT_TC4: DMA1 Channel4 transfer complete interrupt.
  * @arg DMA1_IT_HT4: DMA1 Channel4 half transfer interrupt.
  * @arg DMA1_IT_TE4: DMA1 Channel4 transfer error interrupt.
  * @arg DMA1_IT_GL5: DMA1 Channel5 global interrupt.
  * @arg DMA1_IT_TC5: DMA1 Channel5 transfer complete interrupt.
  * @arg DMA1_IT_HT5: DMA1 Channel5 half transfer interrupt.
  * @arg DMA1_IT_TE5: DMA1 Channel5 transfer error interrupt.
  * @arg DMA1_IT_GL6: DMA1 Channel6 global interrupt.
  * @arg DMA1_IT_TC6: DMA1 Channel6 transfer complete interrupt.
  * @arg DMA1_IT_HT6: DMA1 Channel6 half transfer interrupt.
  * @arg DMA1_IT_TE6: DMA1 Channel6 transfer error interrupt.
  * @arg DMA1_IT_GL7: DMA1 Channel7 global interrupt.
  * @arg DMA1_IT_TC7: DMA1 Channel7 transfer complete interrupt.
  * @arg DMA1_IT_HT7: DMA1 Channel7 half transfer interrupt.
  * @arg DMA1_IT_TE7: DMA1 Channel7 transfer error interrupt.
  * @arg DMA2_IT_GL1: DMA2 Channel1 global interrupt.
  * @arg DMA2_IT_TC1: DMA2 Channel1 transfer complete interrupt.
  * @arg DMA2_IT_HT1: DMA2 Channel1 half transfer interrupt.
  * @arg DMA2_IT_TE1: DMA2 Channel1 transfer error interrupt.
  * @arg DMA2_IT_GL2: DMA2 Channel2 global interrupt.
  * @arg DMA2_IT_TC2: DMA2 Channel2 transfer complete interrupt.
  * @arg DMA2_IT_HT2: DMA2 Channel2 half transfer interrupt.
  * @arg DMA2_IT_TE2: DMA2 Channel2 transfer error interrupt.
  * @arg DMA2_IT_GL3: DMA2 Channel3 global interrupt.
  * @arg DMA2_IT_TC3: DMA2 Channel3 transfer complete interrupt.
  * @arg DMA2_IT_HT3: DMA2 Channel3 half transfer interrupt.
  * @arg DMA2_IT_TE3: DMA2 Channel3 transfer error interrupt.
  * @arg DMA2_IT_GL4: DMA2 Channel4 global interrupt.
  * @arg DMA2_IT_TC4: DMA2 Channel4 transfer complete interrupt.
  * @arg DMA2_IT_HT4: DMA2 Channel4 half transfer interrupt.
  * @arg DMA2_IT_TE4: DMA2 Channel4 transfer error interrupt.
  * @arg DMA2_IT_GL5: DMA2 Channel5 global interrupt.
  * @arg DMA2_IT_TC5: DMA2 Channel5 transfer complete interrupt.
  * @arg DMA2_IT_HT5: DMA2 Channel5 half transfer interrupt.
  * @arg DMA2_IT_TE5: DMA2 Channel5 transfer error interrupt.
  * @retval : None
  */
void DMA_ClearITPendingBit(uint32_t DMA_IT)
{
  /* Check the parameters */
  assert_param(IS_DMA_CLEAR_IT(DMA_IT));
  /* Calculate the used DMA */
  if ((DMA_IT & FLAG_Mask) != (uint32_t)RESET)
  {
    /* Clear the selected DMA interrupt pending bits */
    DMA2->IFCR = DMA_IT;
  }
  else
  {
    /* Clear the selected DMA interrupt pending bits */
    DMA1->IFCR = DMA_IT;
  }
}

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -