打印

STM32的DMA2_CH4_5中断问题。

[复制链接]
5197|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时钟使能。。。

有使能,没贴上来,不然就不会有正弦波输出了把?

使用特权

评论回复
5
qiurenguo|  楼主 | 2013-2-19 16:44 | 只看该作者
airwill 发表于 2013-2-19 16:37
不知道楼主用的什么芯片, 什么编译器? 启动文件里规定了中断函数名, 有没有弄错呢?
startup_stm32f10x_hd.s ...

用的是ve芯片。中断函数应该应该没错吧.
                        IMPORT        BSP_IntHandlerDMA2_CH4_5   
我用的是ucos的模版。其他中断可以用。这个应该就是对应的你那个。

使用特权

评论回复
6
airwill| | 2013-2-19 16:55 | 只看该作者
也许是  
printf ("aa\r\n");
执行太耗时, 堵住了继续进中断.

使用特权

评论回复
7
qiurenguo|  楼主 | 2013-2-19 16:57 | 只看该作者
解决了。重新谢了一个中断配置就可以了。。。真奇怪。。晕倒。

使用特权

评论回复
8
icicicici| | 2013-5-30 13:18 | 只看该作者
qiurenguo 发表于 2013-2-19 16:57
解决了。重新谢了一个中断配置就可以了。。。真奇怪。。晕倒。

楼主你重新配置了什么?重新弄一个中断吗?修改的程序能贴上来参考一下不?

使用特权

评论回复
9
posaty| | 2013-10-25 09:52 | 只看该作者
qiurenguo 发表于 2013-2-19 16:57
解决了。重新谢了一个中断配置就可以了。。。真奇怪。。晕倒。

请问怎么解决的啊,我也遇到了同样的问题

使用特权

评论回复
10
Johnny_dxj| | 2016-11-27 18:45 | 只看该作者
真是函数名问题,谢谢!怎么编译也没警告示

使用特权

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

本版积分规则

35

主题

184

帖子

1

粉丝