📄 stm32f10x_dma.c
字号:
* - 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(u32 DMA_FLAG)
{
/* Check the parameters [检查参数]*/
assert_param(IS_DMA_CLEAR_FLAG(DMA_FLAG));
/* Calculate the used DMA [计算使用的DMA]*/
if ((DMA_FLAG & FLAG_Mask) != (u32)RESET)
{
/* Clear the selected DMA flags [清除选择的DMA标志]*/
DMA2->IFCR = DMA_FLAG;
}
else
{
/* Clear the selected DMA flags [清除选择的DMA标志]*/
DMA1->IFCR = DMA_FLAG;
}
}
/*******************************************************************************
* 函数名称: DMA_GetITStatus
* 功能描述: 检查特定的DMAy 通道x的中断是否被发生。
* 输入参数: DMA_IT:需要检查的DMA通道中断源。
* 这个参数可以是下面的值之一:
* - DMA1_IT_GL1: DMA1 通道1 全局中断.
* - DMA1_IT_TC1: DMA1 通道1 传输完成中断.
* - DMA1_IT_HT1: DMA1 通道1 半传输中断.
* - DMA1_IT_TE1: DMA1 通道1 传输错误中断.
* - DMA1_IT_GL2: DMA1 通道2 全局中断.
* - DMA1_IT_TC2: DMA1 通道2 传输完成中断.
* - DMA1_IT_HT2: DMA1 通道2 半传输中断.
* - DMA1_IT_TE2: DMA1 通道2 传输错误中断.
* - DMA1_IT_GL3: DMA1 通道3 全局中断.
* - DMA1_IT_TC3: DMA1 通道3 传输完成中断.
* - DMA1_IT_HT3: DMA1 通道3 半传输中断.
* - DMA1_IT_TE3: DMA1 通道3 传输错误中断.
* - DMA1_IT_GL4: DMA1 通道4 全局中断.
* - DMA1_IT_TC4: DMA1 通道4 传输完成中断.
* - DMA1_IT_HT4: DMA1 通道4 半传输中断.
* - DMA1_IT_TE4: DMA1 通道4 传输错误中断.
* - DMA1_IT_GL5: DMA1 通道5 全局中断.
* - DMA1_IT_TC5: DMA1 通道5 传输完成中断.
* - DMA1_IT_HT5: DMA1 通道5 半传输中断.
* - DMA1_IT_TE5: DMA1 通道5 传输错误中断.
* - DMA1_IT_GL6: DMA1 通道6 全局中断.
* - DMA1_IT_TC6: DMA1 通道6 传输完成中断.
* - DMA1_IT_HT6: DMA1 通道6 半传输中断.
* - DMA1_IT_TE6: DMA1 通道6 传输错误中断.
* - DMA1_IT_GL7: DMA1 通道7 全局中断.
* - DMA1_IT_TC7: DMA1 通道7 传输完成中断.
* - DMA1_IT_HT7: DMA1 通道7 半传输中断.
* - DMA1_IT_TE7: DMA1 通道7 传输错误中断.
* - DMA2_IT_GL1: DMA2 通道1 全局中断.
* - DMA2_IT_TC1: DMA2 通道1 传输完成中断.
* - DMA2_IT_HT1: DMA2 通道1 半传输中断.
* - DMA2_IT_TE1: DMA2 通道1 传输错误中断.
* - DMA2_IT_GL2: DMA2 通道2 全局中断.
* - DMA2_IT_TC2: DMA2 通道2 传输完成中断.
* - DMA2_IT_HT2: DMA2 通道2 半传输中断.
* - DMA2_IT_TE2: DMA2 通道2 传输错误中断.
* - DMA2_IT_GL3: DMA2 通道3 全局中断.
* - DMA2_IT_TC3: DMA2 通道3 传输完成中断.
* - DMA2_IT_HT3: DMA2 通道3 半传输中断.
* - DMA2_IT_TE3: DMA2 通道3 传输错误中断.
* - DMA2_IT_GL4: DMA2 通道4 全局中断.
* - DMA2_IT_TC4: DMA2 通道4 传输完成中断.
* - DMA2_IT_HT4: DMA2 通道4 半传输中断.
* - DMA2_IT_TE4: DMA2 通道4 传输错误中断.
* - DMA2_IT_GL5: DMA2 通道5 全局中断.
* - DMA2_IT_TC5: DMA2 通道5 传输完成中断.
* - DMA2_IT_HT5: DMA2 通道5 半传输中断.
* - DMA2_IT_TE5: DMA2 通道5 传输错误中断.
* 输出参数: 无
* 返回参数: DMA_IT的新状态(SET或RESET).
*******************************************************************************/
ITStatus DMA_GetITStatus(u32 DMA_IT)
{
ITStatus bitstatus = RESET;
u32 tmpreg = 0;
/* Check the parameters [检查参数]*/
assert_param(IS_DMA_GET_IT(DMA_IT));
/* Calculate the used DMA [计算使用的DMA]*/
if ((DMA_IT & FLAG_Mask) != (u32)RESET)
{
/* Get DMA2 ISR register value [取得DMA2 ISR寄存器值]*/
tmpreg = DMA2->ISR ;
}
else
{
/* Get DMA1 ISR register value [取得DMA1 ISR寄存器值]*/
tmpreg = DMA1->ISR ;
}
/* Check the status of the specified DMA interrupt [检查指定的DMA中断状态]*/
if ((tmpreg & DMA_IT) != (u32)RESET)
{
/* DMA_IT is set [置位DMA_IT]*/
bitstatus = SET;
}
else
{
/* DMA_IT is reset [复位DMA_IT]*/
bitstatus = RESET;
}
/* Return the DMA_IT status [返回DMA_IT的状态]*/
return bitstatus;
}
/*******************************************************************************
* 函数名称: DMA_ClearITPendingBit
* 功能描述: 清除 DMAy 通道x中断挂起位.
* 输入参数: DMA_IT:需要清除的DMA通道的挂起位。使用"|"运算符可以清除多个中断。
* 这个参数可以是下面值的任意组合 (同一个 DMA) :
* - DMA1_IT_GL1: DMA1 通道1 全局中断.
* - DMA1_IT_TC1: DMA1 通道1 传输完成中断.
* - DMA1_IT_HT1: DMA1 通道1 半传输中断.
* - DMA1_IT_TE1: DMA1 通道1 传输错误中断.
* - DMA1_IT_GL2: DMA1 通道2 全局中断.
* - DMA1_IT_TC2: DMA1 通道2 传输完成中断.
* - DMA1_IT_HT2: DMA1 通道2 半传输中断.
* - DMA1_IT_TE2: DMA1 通道2 传输错误中断.
* - DMA1_IT_GL3: DMA1 通道3 全局中断.
* - DMA1_IT_TC3: DMA1 通道3 传输完成中断.
* - DMA1_IT_HT3: DMA1 通道3 半传输中断.
* - DMA1_IT_TE3: DMA1 通道3 传输错误中断.
* - DMA1_IT_GL4: DMA1 通道4 全局中断.
* - DMA1_IT_TC4: DMA1 通道4 传输完成中断.
* - DMA1_IT_HT4: DMA1 通道4 半传输中断.
* - DMA1_IT_TE4: DMA1 通道4 传输错误中断.
* - DMA1_IT_GL5: DMA1 通道5 全局中断.
* - DMA1_IT_TC5: DMA1 通道5 传输完成中断.
* - DMA1_IT_HT5: DMA1 通道5 半传输中断.
* - DMA1_IT_TE5: DMA1 通道5 传输错误中断.
* - DMA1_IT_GL6: DMA1 通道6 全局中断.
* - DMA1_IT_TC6: DMA1 通道6 传输完成中断.
* - DMA1_IT_HT6: DMA1 通道6 半传输中断.
* - DMA1_IT_TE6: DMA1 通道6 传输错误中断.
* - DMA1_IT_GL7: DMA1 通道7 全局中断.
* - DMA1_IT_TC7: DMA1 通道7 传输完成中断.
* - DMA1_IT_HT7: DMA1 通道7 半传输中断.
* - DMA1_IT_TE7: DMA1 通道7 传输错误中断.
* - DMA2_IT_GL1: DMA2 通道1 全局中断.
* - DMA2_IT_TC1: DMA2 通道1 传输完成中断.
* - DMA2_IT_HT1: DMA2 通道1 半传输中断.
* - DMA2_IT_TE1: DMA2 通道1 传输错误中断.
* - DMA2_IT_GL2: DMA2 通道2 全局中断.
* - DMA2_IT_TC2: DMA2 通道2 传输完成中断.
* - DMA2_IT_HT2: DMA2 通道2 半传输中断.
* - DMA2_IT_TE2: DMA2 通道2 传输错误中断.
* - DMA2_IT_GL3: DMA2 通道3 全局中断.
* - DMA2_IT_TC3: DMA2 通道3 传输完成中断.
* - DMA2_IT_HT3: DMA2 通道3 半传输中断.
* - DMA2_IT_TE3: DMA2 通道3 传输错误中断.
* - DMA2_IT_GL4: DMA2 通道4 全局中断.
* - DMA2_IT_TC4: DMA2 通道4 传输完成中断.
* - DMA2_IT_HT4: DMA2 通道4 半传输中断.
* - DMA2_IT_TE4: DMA2 通道4 传输错误中断.
* - DMA2_IT_GL5: DMA2 通道5 全局中断.
* - DMA2_IT_TC5: DMA2 通道5 传输完成中断.
* - DMA2_IT_HT5: DMA2 通道5 半传输中断.
* - DMA2_IT_TE5: DMA2 通道5 传输错误中断.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void DMA_ClearITPendingBit(u32 DMA_IT)
{
/* Check the parameters [检查参数]*/
assert_param(IS_DMA_CLEAR_IT(DMA_IT));
/* Calculate the used DMA [计算使用的DMA]*/
if ((DMA_IT & FLAG_Mask) != (u32)RESET)
{
/* Clear the selected DMA interrupt pending bits [清除选择的DMA中断挂起位]*/
DMA2->IFCR = DMA_IT;
}
else
{
/* Clear the selected DMA interrupt pending bits [清除选择的DMA中断挂起位]*/
DMA1->IFCR = DMA_IT;
}
}
/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -