高级会员

- 积分
- 823
- 金钱
- 823
- 注册时间
- 2014-1-15
- 在线时间
- 350 小时
|
5金钱
比如:DMA_ClearFlag(DMA1_FLAG_TC2);函数:
void DMA_ClearFlag(uint32_t DMAy_FLAG)------------1
{
/* Check the parameters */
assert_param(IS_DMA_CLEAR_FLAG(DMAy_FLAG));-----------2
/* Calculate the used DMAy */
if ((DMAy_FLAG & FLAG_Mask) != (uint32_t)RESET)-----------3
{
/* Clear the selected DMAy flags */
DMA2->IFCR = DMAy_FLAG;------------------------------------4
}
else
{
/* Clear the selected DMAy flags */
DMA1->IFCR = DMAy_FLAG;---------------------------------5
}
}
DMA1_FLAG_TC2为((uint32_t)0x00000020),句2是检测参数是否有效,不用管,句3:判断是DMA1或2;句5中将DMA1_FLAG_TC2即((uint32_t)0x00000020)赋给DMA1->IFCR,我感觉应该是DMA1->IFCR |= DMAy_FLAG;啊,不能理解
|
最佳答案
查看完整内容[请看2#楼]
都一样的。中断标志清零寄存器,把其中的某个位置1,就会清零相对应的中断标志。你想清除某一个中断标志,将对应的位置1就行,至于其他位,只要不是1,就不会影响到其他中断标志位。
|