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

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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版