예제 #1
0
/**
  * @brief  Clears the DMAy Streamx's pending flags.
  * @param  DMAy_Streamx: where y can be 1 or 2 to select the DMA and x can be 0
  *          to 7 to select the DMA Stream.
  * @param  DMA_FLAG: specifies the flag to clear.
  *          This parameter can be any combination of the following values:
  *            @arg DMA_FLAG_TCIFx:  Streamx transfer complete flag
  *            @arg DMA_FLAG_HTIFx:  Streamx half transfer complete flag
  *            @arg DMA_FLAG_TEIFx:  Streamx transfer error flag
  *            @arg DMA_FLAG_DMEIFx: Streamx direct mode error flag
  *            @arg DMA_FLAG_FEIFx:  Streamx FIFO error flag
  *         Where x can be 0 to 7 to select the DMA Stream.
  * @retval None
  */
void DMA_ClearFlag(DMA_Stream_TypeDef* DMAy_Streamx, uint32_t DMA_FLAG)
{
  DMA_TypeDef* DMAy;

  /* Check the parameters */
  assert_param(IS_DMA_ALL_PERIPH(DMAy_Streamx));
  assert_param(IS_DMA_CLEAR_FLAG(DMA_FLAG));

  /* Determine the DMA to which belongs the stream */
  if (DMAy_Streamx < DMA2_Stream0)
  {
    /* DMAy_Streamx belongs to DMA1 */
    DMAy = DMA1;
  }
  else
  {
    /* DMAy_Streamx belongs to DMA2 */
    DMAy = DMA2;
  }

  /* Check if LIFCR or HIFCR register is targeted */
  if ((DMA_FLAG & HIGH_ISR_MASK) != (uint32_t)RESET)
  {
    /* Set DMAy HIFCR register clear flag bits */
    DMAy->HIFCR = (uint32_t)(DMA_FLAG & RESERVED_MASK);
  }
  else
  {
    /* Set DMAy LIFCR register clear flag bits */
    DMAy->LIFCR = (uint32_t)(DMA_FLAG & RESERVED_MASK);
  }
}
예제 #2
0
/**
  * @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.
  *
  * @note
  *    Clearing the Global flag (DMAy_FLAG_GLx) results in clearing all other flags
  *    relative to the same channel (Transfer Complete, Half-transfer Complete and
  *    Transfer Error flags: DMAy_FLAG_TCx, DMAy_FLAG_HTx and DMAy_FLAG_TEx).
  *
  * @retval None
  */
void DMA_ClearFlag(uint32_t DMA_FLAG)
{
    /* Check the parameters */
    assert_param(IS_DMA_CLEAR_FLAG(DMA_FLAG));

    /* Clear the selected DMA flags */
    DMA1->IFCR = DMA_FLAG;
}
예제 #3
0
/*******************************************************************************
* Function Name  : DMA_ClearFlag
* Description    : Clears the DMA's pending flags.
* Input          : - DMA_FLAG: specifies the flag to clear. 
*                    This parameter can be any combination of the following values:
*                       - DMA_FLAG_GL1: Channel1 global flag.
*                       - DMA_FLAG_TC1: Channel1 transfer complete flag.
*                       - DMA_FLAG_HT1: Channel1 half transfer flag.
*                       - DMA_FLAG_TE1: Channel1 transfer error flag.
*                       - DMA_FLAG_GL2: Channel2 global flag.
*                       - DMA_FLAG_TC2: Channel2 transfer complete flag.
*                       - DMA_FLAG_HT2: Channel2 half transfer flag.
*                       - DMA_FLAG_TE2: Channel2 transfer error flag.
*                       - DMA_FLAG_GL3: Channel3 global flag.
*                       - DMA_FLAG_TC3: Channel3 transfer complete flag.
*                       - DMA_FLAG_HT3: Channel3 half transfer flag.
*                       - DMA_FLAG_TE3: Channel3 transfer error flag.
*                       - DMA_FLAG_GL4: Channel4 global flag.
*                       - DMA_FLAG_TC4: Channel4 transfer complete flag.
*                       - DMA_FLAG_HT4: Channel4 half transfer flag.
*                       - DMA_FLAG_TE4: Channel4 transfer error flag.
*                       - DMA_FLAG_GL5: Channel5 global flag.
*                       - DMA_FLAG_TC5: Channel5 transfer complete flag.
*                       - DMA_FLAG_HT5: Channel5 half transfer flag.
*                       - DMA_FLAG_TE5: Channel5 transfer error flag.
*                       - DMA_FLAG_GL6: Channel6 global flag.
*                       - DMA_FLAG_TC6: Channel6 transfer complete flag.
*                       - DMA_FLAG_HT6: Channel6 half transfer flag.
*                       - DMA_FLAG_TE6: Channel6 transfer error flag.
*                       - DMA_FLAG_GL7: Channel7 global flag.
*                       - DMA_FLAG_TC7: Channel7 transfer complete flag.
*                       - DMA_FLAG_HT7: Channel7 half transfer flag.
*                       - DMA_FLAG_TE7: Channel7 transfer error flag.
* Output         : None
* Return         : None
*******************************************************************************/
void DMA_ClearFlag(uint32 DMA_FLAG)
{
  /* Check the parameters */
  ASSERT(IS_DMA_CLEAR_FLAG(DMA_FLAG));

  /* Clear the selected DMA flags */
  DMA->IFCR = DMA_FLAG;
}
예제 #4
0
/**
  * @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.
  *     
  * @note
  *    Clearing the Global flag (DMAy_FLAG_GLx) results in clearing all other flags
  *    relative to the same channel (Transfer Complete, Half-transfer Complete and 
  *    Transfer Error flags: DMAy_FLAG_TCx, DMAy_FLAG_HTx and DMAy_FLAG_TEx).  
  *      
  * @retval None
  */
void DMA_ClearFlag(uint32_t DMA_FLAG)
{
  /* Check the parameters */
  assert_param(IS_DMA_CLEAR_FLAG(DMA_FLAG));

  if ((DMA_FLAG & FLAG_MASK) == (uint32_t)RESET)
  {
    /* Clear the selected DMA flags */
    DMA1->IFCR = DMA_FLAG;
  }
}
예제 #5
0
/**
  * @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;
	}
}
예제 #6
0
/**
  * @簡述  清除定的 DMA y 通道 x 待處理標誌位.
  * @參數  DMA_FLAG: 指定的待處理標誌位.
  *          這個參數可以是下面值的任意組合 (對於同一個 DMA) :
*            DMA1_FLAG_GL1: DMA1通道1全局標誌
*            DMA1_FLAG_TC1: DMA1通道1傳輸結束標誌
*            DMA1_FLAG_HT1: DMA1通道1半傳輸標誌
*            DMA1_FLAG_TE1: DMA1通道1傳輸錯誤標誌
*            DMA1_FLAG_GL2: DMA1 通道2 全局標誌.
*            DMA1_FLAG_TC2: DMA1 通道2 傳輸結束標誌.
*            DMA1_FLAG_HT2: DMA1 通道2 半傳輸標誌.
*            DMA1_FLAG_TE2: DMA1 通道2 傳輸錯誤標誌.
*            DMA1_FLAG_GL3: DMA1 通道3 全局標誌.
*            DMA1_FLAG_TC3: DMA1 通道3 傳輸結束標誌.
*            DMA1_FLAG_HT3: DMA1 通道3 半傳輸標誌.
*            DMA1_FLAG_TE3: DMA1 通道3 傳輸錯誤標誌.
*            DMA1_FLAG_GL4: DMA1 通道4 全局標誌.
*            DMA1_FLAG_TC4: DMA1 通道4 傳輸結束標誌.
*            DMA1_FLAG_HT4: DMA1 通道4 半傳輸標誌.
*            DMA1_FLAG_TE4: DMA1 通道4 傳輸錯誤標誌.
*            DMA1_FLAG_GL5: DMA1 通道5 全局標誌.
*            DMA1_FLAG_TC5: DMA1 通道5 傳輸結束標誌.
*            DMA1_FLAG_HT5: DMA1 通道5 半傳輸標誌.
*            DMA1_FLAG_TE5: DMA1 通道5 傳輸錯誤標誌.
*            DMA1_FLAG_GL6: DMA1 通道6 全局標誌.
*            DMA1_FLAG_TC6: DMA1 通道6 傳輸結束標誌.
*            DMA1_FLAG_HT6: DMA1 通道6 半傳輸標誌.
*            DMA1_FLAG_TE6: DMA1 通道6 傳輸錯誤標誌.
*            DMA1_FLAG_GL7: DMA1 通道7 全局標誌.
*            DMA1_FLAG_TC7: DMA1 通道7 傳輸結束標誌.
*            DMA1_FLAG_HT7: DMA1 通道7 半傳輸標誌.
*            DMA1_FLAG_TE7: DMA1 通道7 傳輸錯誤標誌.
*            DMA2_FLAG_GL1: DMA2 通道1 全局標誌.
*            DMA2_FLAG_TC1: DMA2 通道1 傳輸結束標誌.
*            DMA2_FLAG_HT1: DMA2 通道1 半傳輸標誌.
*            DMA2_FLAG_TE1: DMA2 通道1 傳輸錯誤標誌.
*            DMA2_FLAG_GL2: DMA2 通道2 全局標誌.
*            DMA2_FLAG_TC2: DMA2 通道2 傳輸結束標誌.
*            DMA2_FLAG_HT2: DMA2 通道2 半傳輸標誌.
*            DMA2_FLAG_TE2: DMA2 通道2 傳輸錯誤標誌.
*            DMA2_FLAG_GL3: DMA2 通道3 全局標誌.
*            DMA2_FLAG_TC3: DMA2 通道3 傳輸結束標誌.
*            DMA2_FLAG_HT3: DMA2 通道3 半傳輸標誌.
*            DMA2_FLAG_TE3: DMA2 通道3 傳輸錯誤標誌.
*            DMA2_FLAG_GL4: DMA2 通道4 全局標誌.
*            DMA2_FLAG_TC4: DMA2 通道4 傳輸結束標誌.
*            DMA2_FLAG_HT4: DMA2 通道4 半傳輸標誌.
*            DMA2_FLAG_TE4: DMA2 通道4 傳輸錯誤標誌.
*            DMA2_FLAG_GL5: DMA2 通道5 全局標誌.
*            DMA2_FLAG_TC5: DMA2 通道5 傳輸結束標誌.
*            DMA2_FLAG_HT5: DMA2 通道5 半傳輸標誌.
*            DMA2_FLAG_TE5: DMA2 通道5 傳輸錯誤標誌.
  * @返回  沒有
  */
void DMA_ClearFlag(uint32_t DMA_FLAG)
{
  /* 檢查參數 */
  assert_param(IS_DMA_CLEAR_FLAG(DMA_FLAG));
  /* 計算使用的 DMA */

  if ((DMA_FLAG & FLAG_Mask) != (uint32_t)RESET)
  {
    /* 清除選定的 DMA 標誌 */
    DMA2->IFCR = DMA_FLAG;
  }
  else
  {
    /* 清除選定的 DMA 標誌 */
    DMA1->IFCR = DMA_FLAG;
  }
}