新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2016-7-18
- 在线时间
- 3 小时
|
最近在使用SPI+DMA中断接收SPI1的数据然后进入中断处理数据,但是在使用DMA接收中断时,出现了以下问题:
一、
DMA初始化代码
/* DMA 中断使能 */
DMA_ITConfig( DMA1_Channel2, DMA_IT_TC, ENABLE );
/* 下面的代码同时使用的时候,程序无法正常运行,如果只使用其中的一个能正常运行, */
DMA_ClearITPendingBit( DMA1_IT_TC2 );
DMA_ClearFlag( DMA1_FLAG_TC2 );
二、查看了下库函数中的实现,他们实现的功能都是相同的,代码也是相同的
#define DMA1_IT_TC2 ((uint32_t)0x00000020)
#define DMA1_FLAG_TC2 ((uint32_t)0x00000020)
根据两个参数不同分别对CTCIF1和清除
void DMA_ClearFlag(uint32_t DMAy_FLAG)
{
/* Check the parameters */
assert_param(IS_DMA_CLEAR_FLAG(DMAy_FLAG));
/* Calculate the used DMAy */
if ((DMAy_FLAG & FLAG_Mask) != (uint32_t)RESET)
{
/* Clear the selected DMAy flags */
DMA2->IFCR = DMAy_FLAG;
}
else
{
/* Clear the selected DMAy flags */
DMA1->IFCR = DMAy_FLAG;
}
}
|
|