STM32的DMA2_CH4_5中断问题。

[复制链接]
6112|9
 楼主| qiurenguo 发表于 2013-2-19 15:57 | 显示全部楼层 |阅读模式
        NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        /* Enable DMA1 channel1 IRQ Channel */
        NVIC_InitStructure.NVIC_IRQChannel = DMA2_Channel4_5_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);  
                   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&Escalator12bit;
        DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R2_Address;
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
        DMA_InitStructure.DMA_BufferSize = 200;
        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//DMA_PeripheralDataSize_Byte;
        DMA_InitStructure.DMA_MemoryDataSize =              DMA_MemoryDataSize_HalfWord;//DMA_MemoryDataSize_Byte;
        DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
        DMA_InitStructure.DMA_Priority = DMA_Priority_High;
        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
        DMA_Init(DMA2_Channel4, &DMA_InitStructure);
                   DMA_ITConfig (DMA2_Channel4, DMA_IT_TC, ENABLE);
        DMA_Cmd(DMA2_Channel4, ENABLE);

void  BSP_IntHandlerDMA2_CH4_5    (void)  
{
        if (DMA_GetITStatus (DMA2_IT_TC4) == SET){
                DMA_ClearITPendingBit (DMA2_IT_TC4);
                printf ("aa\r\n");
        }
        printf ("aa\r\n");
}

请教下,为什么老是不进入中断?不知道那里配置错误,有没有那个高手慧眼看看。谢了。DMA有在跑,我弄得是正弦输出,有正弦波输出,就是不进入中断。:'(:'(
uet_cache 发表于 2013-2-19 16:17 | 显示全部楼层
没看到你DMA时钟使能。。。
airwill 发表于 2013-2-19 16:37 | 显示全部楼层
不知道楼主用的什么芯片, 什么编译器? 启动文件里规定了中断函数名, 有没有弄错呢?
startup_stm32f10x_hd.s  规定的中断函数名是:

void DMA2_Channel4_5_IRQHandler();
 楼主| qiurenguo 发表于 2013-2-19 16:38 | 显示全部楼层
uet_cache 发表于 2013-2-19 16:17
没看到你DMA时钟使能。。。

有使能,没贴上来,不然就不会有正弦波输出了把?
 楼主| qiurenguo 发表于 2013-2-19 16:44 | 显示全部楼层
airwill 发表于 2013-2-19 16:37
不知道楼主用的什么芯片, 什么编译器? 启动文件里规定了中断函数名, 有没有弄错呢?
startup_stm32f10x_hd.s ...

用的是ve芯片。中断函数应该应该没错吧.
                        IMPORT        BSP_IntHandlerDMA2_CH4_5   
我用的是ucos的模版。其他中断可以用。这个应该就是对应的你那个。
airwill 发表于 2013-2-19 16:55 | 显示全部楼层
也许是  
printf ("aa\r\n");
执行太耗时, 堵住了继续进中断.
 楼主| qiurenguo 发表于 2013-2-19 16:57 | 显示全部楼层
解决了。重新谢了一个中断配置就可以了。。。真奇怪。。晕倒。
icicicici 发表于 2013-5-30 13:18 | 显示全部楼层
qiurenguo 发表于 2013-2-19 16:57
解决了。重新谢了一个中断配置就可以了。。。真奇怪。。晕倒。

楼主你重新配置了什么?重新弄一个中断吗?修改的程序能贴上来参考一下不?
posaty 发表于 2013-10-25 09:52 | 显示全部楼层
qiurenguo 发表于 2013-2-19 16:57
解决了。重新谢了一个中断配置就可以了。。。真奇怪。。晕倒。

请问怎么解决的啊,我也遇到了同样的问题
Johnny_dxj 发表于 2016-11-27 18:45 | 显示全部楼层
真是函数名问题,谢谢!怎么编译也没警告示
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

184

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部