OpenEdv-开源电子网

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

DMA中断出不去

[复制链接]

13

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2017-5-1
在线时间
25 小时
发表于 2017-5-12 19:15:15 | 显示全部楼层 |阅读模式
[mw_shl_code=applescript,true]void DMA1_Channel1_IRQHandler(void)
{
        int i,j;
    if(DMA_GetITStatus(DMA1_IT_TC1))
    {
        DMA_ClearITPendingBit(DMA1_IT_GL1);
                                for(i=0;i<256;i++)
                                {
                                        fftData.real = ADC_ConvertedValue;
                                       
                                }
                                flagDMA=1;
                                //dofft();
                               
    }
}
[/mw_shl_code]
这是DMA的中断函数, 是采集ADC的DMA,我设置了一个flagDMA作为标识,在主函数的while(1)中检测flagDMA,当完成采集后把数据发给fftData[],然后主函数用,但是好像就一直停留在中断里面出不去了,这是怎么回事呢,求告知,谢谢了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2017-5-1
在线时间
25 小时
 楼主| 发表于 2017-5-12 21:18:19 | 显示全部楼层
这个问题解决了,但是好像遇到了另一个问题,就是我的一个自定义函数地址越界了.....这是怎么回事呢
[mw_shl_code=applescript,true]void initW()   
{  
    int i;  
    W=(complex *)malloc(sizeof(complex) * size_fft);  //生成变换核
    for(i=0;i<size_fft;i++)
    {
        W.real=cos_tab;   //用欧拉公式计算旋转因子
        W.img=_sin_tab;
    }
}  [/mw_shl_code]
回复 支持 反对

使用道具 举报

13

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2017-5-1
在线时间
25 小时
 楼主| 发表于 2017-5-12 23:11:08 | 显示全部楼层
这个问题也解决了,定义成W数组, 就可以了,但是又有问题了......DMA中断的时候好像占用了cpu的是吗,我这个程序DMA好像长时间占用了cpu  ,影响到了其他外设,怎么解决呢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 08:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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