打印
[MCU]

发现不能进入中断了

[复制链接]
396|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyjie|  楼主 | 2020-1-20 23:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA, DM, ADT, rc, AI
在dma初始化中,我这样写DMA0CTL |= DMADT_4 + DMASRCINCR_3 + + DMAEN + DMAIE;
可以进入DMA中断

但是在初始化的时候只写这个DMA0CTL |= DMADT_4 + DMASRCINCR_3

然后在执行其他程序后需要进入DMA中断时,再加上DMA0CTL |=+ DMAEN + DMAIE  这个,
发现不能进入中断了

使用特权

评论回复

相关帖子

沙发
jlyuan| | 2020-1-20 23:56 | 只看该作者

还有什么现象?能再详细描述下吗?

使用特权

评论回复
板凳
wyjie|  楼主 | 2020-1-20 23:58 | 只看该作者
就卡死在 __bis_SR_register(CPUOFF + GIE);这里了
  这是为什么啊?

使用特权

评论回复
地板
zwll| | 2020-1-21 21:15 | 只看该作者
其他程序呢

使用特权

评论回复
5
wyjie|  楼主 | 2020-1-21 21:19 | 只看该作者
其他程序没有任何地方的改变,整个程序也只有DMA这个中断,

使用特权

评论回复
6
xxrs| | 2020-1-21 21:22 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
7
wyjie|  楼主 | 2020-1-21 21:24 | 只看该作者
正常情况下的DMA初始化
DMACTL0 = DMA0TSEL_5;        // DAC12IFG trigger DMA0  // critial codes to trigger all                                                                                                            
                                                                           // assign finally set
  // DMA0 setup for DAC0
  DMA0SA = (unsigned int)&Sin_tab;          // Source block address
  DMA0DA = (unsigned int)&DAC12_0DAT;       // Destination single address
  DMA0SZ = 32;                              // Block size
  DMA0CTL |= DMADT_4 + DMASRCINCR_3 + DMAEN + DMAIE; // Rpt, inc src, word-word

正常执行这个后__bis_SR_register(CPUOFF + GIE);进入DMA中断,就是这个
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=DACDMA_VECTOR
__interrupt void DACDMA_ISR (void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(DACDMA_VECTOR))) DACDMA_ISR (void)
#else
#error Compiler not supported!
#endif
{
}

分开写DMA初始化后,不正常情况就是卡在__bis_SR_register(CPUOFF + GIE)这里了,进不了中断了

使用特权

评论回复
8
hanwe| | 2020-1-21 21:26 | 只看该作者

__bis_SR_register(CPUOFF + GIE);这个函数读的是什么内容。

使用特权

评论回复
9
zhuww| | 2020-1-21 21:29 | 只看该作者
dma0ctl的配置是初始化的最后一句?

使用特权

评论回复
10
bqyj| | 2020-1-21 21:34 | 只看该作者
试一下,初始化过程,不配这个寄存器,在执行其他内容后的那个地方,加上完整的对该寄存器的配置,看看效果。

使用特权

评论回复
11
chenho| | 2020-1-21 21:38 | 只看该作者
这是为什么呢?

使用特权

评论回复
12
dingy| | 2020-1-21 21:40 | 只看该作者
DMA的功能,我也是很久前用过。现在手里也没有环境试验。你认真看手册里面有没有,关于初始化顺序的说明。

使用特权

评论回复
13
xxrs| | 2020-1-21 21:43 | 只看该作者
是不是一些配置有限制。不能随便实时更改。

使用特权

评论回复
14
zyf部长| | 2020-1-21 21:45 | 只看该作者

之前我调一个adc和DMA的功能,改一个寄存器的值,折腾半天没有效果。后来,换了一个位置给寄存器赋值,就起作用了。

使用特权

评论回复
15
llia| | 2020-1-21 21:49 | 只看该作者

楼主用的什么型号的mcu?

使用特权

评论回复
16
wyjie|  楼主 | 2020-1-21 21:52 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
17
wyjie|  楼主 | 2020-1-21 21:56 | 只看该作者

好的,我明天去单位试一下,多谢各位大侠了哈        

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

927

主题

12706

帖子

5

粉丝