stm32 的DMA中断问题
stm32 的 DMA 中断问题悬赏分:0 - 离问题结束还有 14 天 23 小时
在使用 stm32的德DMA中断的时候
DMA1_Channel1->CCR = 0x000025Ae;打开了DMA的所有中断。
在程序运行的时候GIF1 TCIF1 HTIF1 的标记位都已经置1了。但是程序就是不进入中断。查看中断控制器的内容,发现DMA的中断被挂起了(pending)。这是怎么回事?
我的中断程序是
/******************************************************************************/
/* DMA interrupt service function */
/* */
/******************************************************************************/
void DMAChannel1_IRQHandler(void)
{
int r = 5;
}
初始化函数
void adc_Init (void) {
//GPIOA->CRL &= ~0x0000000F; /* set PIN1 analog input (see stm32_Init.c) */
RCC->AHBENR |= (1CPAR= (unsigned long)&(ADC1->DR); /* set chn1 peripheral address */
DMA1_Channel1->CNDTR = 3; /* transmit 3 words */
//DMA1_Channel1->CCR = 0x00002520; /* configure DMA channel 1 */
DMA1_Channel1->CCR = 0x000025Ae; /* configure DMA channel 1 */
/* circular mode, memory increment mode */
/* memory & peripheral size 16bit */
/* channel priotity high */
DMA1_Channel1->CCR|= (1 APB2ENR |= (1SQR3= (2
RE:stm32 的DMA中断问题
你把中断设置好了。但是你没有将NVIC中的DMA中断向量赋值,自然不会引起中断。下面是我在写RTC中断时候NVIC的配置,你可以根据你的需求开启你的中断,将RTC_IRQChannel换成你需要开启的通道就行了。void RTC_It(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =6;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
RE:stm32 的DMA中断问题
参考ST里面的demo,学习一下DMA回复:stm32 的DMA中断问题
回复第 3 楼 于2009-12-12 04:15:38发表:参考ST里面的demo,学习一下DMA
把中断函数DMAChannel1_IRQHandler() 换成DMA1_Channel1_IRQHandler ()试试,
startup_stm32f10x_xl.s里是这么写的
EXPORT EXTI1_IRQHandler
EXPORT EXTI2_IRQHandler
EXPORT EXTI3_IRQHandler
EXPORT EXTI4_IRQHandler
EXPORT DMA1_Channel1_IRQHandler
EXPORT DMA1_Channel2_IRQHandler
EXPORT DMA1_Channel3_IRQHandler
EXPORT DMA1_Channel4_IRQHandler
EXPORT DMA1_Channel5_IRQHandler
EXPORT DMA1_Channel6_IRQHandler
EXPORT DMA1_Channel7_IRQHandler
页:
[1]