OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5296|回复: 4

DMA传输中断为什么只能进入一次

[复制链接]

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2021-4-15
在线时间
16 小时
发表于 2021-9-6 17:37:32 | 显示全部楼层 |阅读模式
请问一下DMA传输,我配置Normal模式,为什么DMA中断只能进入一次,,并且我也重新设置了 传输数量,恳求大佬告知原因,网上例子也试过,我的红灯就是不亮(灯没坏)
DMA_InitStructure.DMA_Channel = DMA_Channel_0;                              //í¨μàÑ¡Ôñ0
    DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_ADDRESS;       //DMAíaéèμØÖ·
    DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)ADC1_Buff;       //DMA ′æ′¢Æ÷0μØÖ·
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;                     //êy¾Y′«êä·½Ïò£¬′óíaéè·¢Ëíμ½Äú′æ  DMA_CCRXλ4/
    DMA_InitStructure.DMA_BufferSize =ADC_LENTH;                        //êy¾Y′«êäá¿
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;            //íaéèμØÖ·Ö¸Õë1춨
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                     //′æ′¢Æ÷μYÔöÄ£ê½
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //íaéèêy¾Y3¤¶è:16λ   °ë×Ö
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;         //′æ′¢Æ÷êy¾Y3¤¶è:16λ  °ë×Ö
    DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;                             // ê1óÃÑ-»·Ä£ê½ DMA_Mode_Circular
    DMA_InitStructure.DMA_Priority = DMA_Priority_High;                         //¸ßμèóÅÏ輶/
    DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;                      //½ûÖ1FIFO   
    DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;           //FIFOμÄÖμ
    DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;                 //′æ′¢Æ÷í»·¢μ¥′Î′«êä
    DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;         //íaéèí»·¢μ¥′Î′«êä
    DMA_Init(DMA2_Stream0, &DMA_InitStructure);
    DMA_Cmd(DMA2_Stream0, ENABLE);
       
    NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream0_IRQn;  //DMA2_Stream0ÖD¶Ï
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;  //ÇàÕ¼óÅÏ輶1
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;        //×óóÅÏ輶1
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //IRQí¨μàê1Äü
    NVIC_Init(&NVIC_InitStructure);    //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉNVIC¼Ä′æÆ÷
//    DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TC); //Çå3yÖD¶Ï±êÖ¾   
    DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE); //′«êäíê3éÖD¶Ï   
    /* ADC1 1æÔò channel3¡¢5 ÅäÖÃ *************************************/
    ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 1, ADC_SampleTime_3Cycles);
   
    /* ê1ÄüDMAÇëÇó(μ¥ADCÄ£ê½) */
    ADC_MultiModeDMARequestAfterLastTransferCmd(ENABLE);//Ôú¶àADCÄ£ê½ÏÂ×îoóò»′Î′«êäíê3éoó′¥·¢ADC_DMAêy¾Y′«êä

    /* ê1Äü ADC1 DMA */
    ADC_DMACmd(ADC1, ENABLE);
    /* ê1Äü ADC1 */
        ADC_Cmd(ADC1, ENABLE);
        TIM_Cmd(TIM3,ENABLE);
}
void DMA_ON()
{
DMA_Cmd(DMA2_Stream0, DISABLE);
DMA_GetCurrDataCounter(DMA2_Stream0);
DMA_SetCurrDataCounter(DMA2_Stream0,1024);
DMA_Cmd(DMA2_Stream0, ENABLE);
}
void DMA2_Stream0_IRQHandler(void)  
{
     static uint16_t t=0;
    if(DMA_GetITStatus(DMA2_Stream0, DMA_IT_TCIF0))  //ÅD¶ÏDMA′«êäíê3éÖD¶Ï  
    {
                DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TCIF0);  
                t++;
                DMA_ON();
       if(t==2)
           {
                 GPIO_ResetBits(GPIOF,GPIO_Pin_9);  
                 adc_flag=1;
                 t=0;
           }
    }
       
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

592

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1458
金钱
1458
注册时间
2019-7-28
在线时间
137 小时
发表于 2021-9-7 10:15:37 | 显示全部楼层
你debug看看,这个这么一大串代码看的我眼花
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2021-4-15
在线时间
16 小时
 楼主| 发表于 2021-9-7 22:59:07 | 显示全部楼层
lpwithv 发表于 2021-9-7 10:15
你debug看看,这个这么一大串代码看的我眼花

你好,问题已经解决了,把Normal改成循环就行了
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2021-4-15
在线时间
16 小时
 楼主| 发表于 2021-9-7 22:59:27 | 显示全部楼层
lpwithv 发表于 2021-9-7 10:15
你debug看看,这个这么一大串代码看的我眼花

谢谢了
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6248
金钱
6248
注册时间
2018-6-27
在线时间
534 小时
发表于 2021-12-28 10:37:35 | 显示全部楼层
谢谢分享,学习学习。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 09:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表