你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32 的DMA中断问题

[复制链接]
linweihua 提问时间:2009-12-1 09:18 /
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
收藏 评论3 发布时间:2009-12-1 09:18

举报

3个回答
废鱼 回答时间:2009-12-1 09:38:57

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);
}
sheweiwei 回答时间:2009-12-11 20:15:38

RE:stm32 的DMA中断问题

参考ST里面的demo,学习一下DMA
he-425290 回答时间:2013-5-5 17:05:38

回复:stm32 的DMA中断问题

回复第 3 楼 于2009-12-12 04:15:38发表:
参考ST里面的demo,学习一下DMA 

把中断函数DMAChannel1_IRQHandler()  换成DMA1_Channel1_IRQHandler ()试试,
startup_stm32f10x_xl.s里是这么写的
                EXPORT  EXTI1_IRQHandler              [WEAK]
                EXPORT  EXTI2_IRQHandler              [WEAK]
                EXPORT  EXTI3_IRQHandler              [WEAK]
                EXPORT  EXTI4_IRQHandler              [WEAK]
                EXPORT  DMA1_Channel1_IRQHandler      [WEAK]
                EXPORT  DMA1_Channel2_IRQHandler      [WEAK]
                EXPORT  DMA1_Channel3_IRQHandler      [WEAK]
                EXPORT  DMA1_Channel4_IRQHandler      [WEAK]
                EXPORT  DMA1_Channel5_IRQHandler      [WEAK]
                EXPORT  DMA1_Channel6_IRQHandler      [WEAK]
                EXPORT  DMA1_Channel7_IRQHandler      [WEAK]
 
 

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版