/** * @brief Checks whether the specified DMAy Channelx flag is set or not. * @param DMAy_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 DMAy_FLAG (SET or RESET). */ FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG) { FlagStatus bitstatus = RESET; uint32_t tmpreg = 0; /* Check the parameters */ assert_param(IS_DMA_GET_FLAG(DMAy_FLAG)); /* Calculate the used DMAy */ if ((DMAy_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 DMAy flag */ if ((tmpreg & DMAy_FLAG) != (uint32_t)RESET) { /* DMAy_FLAG is set */ bitstatus = SET; } else { /* DMAy_FLAG is reset */ bitstatus = RESET; } /* Return the DMAy_FLAG status */ return bitstatus; }
/** * @簡述 檢查指定的 DMA y 通道 x 標誌位設置與否. * @參數 DMA_FLAG: 指定的標誌. * 這個參數可以是下面的值之一: * 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 傳輸錯誤標誌. * @返回 DMA_FLAG 的新狀態 (SET 或 RESET). */ FlagStatus DMA_GetFlagStatus(uint32_t DMA_FLAG) { FlagStatus bitstatus = RESET; uint32_t tmpreg = 0; /* 檢查參數 */ assert_param(IS_DMA_GET_FLAG(DMA_FLAG)); /* 計算使用的 DMA */ if ((DMA_FLAG & FLAG_Mask) != (uint32_t)RESET) { /* 得到 DMA2 ISR 寄存器的值 */ tmpreg = DMA2->ISR ; } else { /* 得到 DMA1 ISR 寄存器的值 */ tmpreg = DMA1->ISR ; } /* 檢查指定的 DMA 標誌的新狀態 */ if ((tmpreg & DMA_FLAG) != (uint32_t)RESET) { /* 設置 DMA_FLAG */ bitstatus = SET; } else { /* 復位 DMA_FLAG */ bitstatus = RESET; } /* 返回 DMA_FLAG 狀態 */ return bitstatus; }
/** * @brief Checks whether the specified DMAy Streamx flag is set or not. * @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 check. * This parameter can be one 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 The new state of DMA_FLAG (SET or RESET). */ FlagStatus DMA_GetFlagStatus(DMA_Stream_TypeDef* DMAy_Streamx, uint32_t DMA_FLAG) { FlagStatus bitstatus = RESET; DMA_TypeDef* DMAy; uint32_t tmpreg = 0; /* Check the parameters */ assert_param(IS_DMA_ALL_PERIPH(DMAy_Streamx)); assert_param(IS_DMA_GET_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 the flag is in HISR or LISR */ if ((DMA_FLAG & HIGH_ISR_MASK) != (uint32_t)RESET) { /* Get DMAy HISR register value */ tmpreg = DMAy->HISR; } else { /* Get DMAy LISR register value */ tmpreg = DMAy->LISR; } /* Mask the reserved bits */ tmpreg &= (uint32_t)RESERVED_MASK; /* 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 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. * * @note * The Global flag (DMAy_FLAG_GLx) is set whenever any of the other flags * relative to the same channel is set (Transfer Complete, Half-transfer * Complete or Transfer Error flags: DMAy_FLAG_TCx, DMAy_FLAG_HTx or * DMAy_FLAG_TEx). * * @retval The new state of DMA_FLAG (SET or RESET). */ FlagStatus DMA_GetFlagStatus(uint32_t DMA_FLAG) { FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_DMA_GET_FLAG(DMA_FLAG)); /* Check the status of the specified DMA flag */ if ((DMA1->ISR & 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; }