/** * @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); } }
/** * @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; }
/******************************************************************************* * 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; }
/** * @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; } }
/** * @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; } }
/** * @簡述 清除定的 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; } }