STM32的AD采样

[复制链接]
 楼主| t2230510 发表于 2011-3-22 20:49 | 显示全部楼层 |阅读模式
STM32的AD采样,在连续模式下,是不是一定要DMA传输啊 ?

我将DMA关掉,开启AD中断,但运行时一直进不了AD中断。

why?
jgphu 发表于 2011-3-22 20:52 | 显示全部楼层
中断使能全打开了吗?
ST_ARM 发表于 2011-3-22 23:25 | 显示全部楼层
“STM32的AD采样,在连续模式下,是不是一定要DMA传输啊 ?”
如果使用多个通道,必须使用DMA!

“我将DMA关掉,开启AD中断,但运行时一直进不了AD中断。”
NVIC里面中断是否设置了?
 楼主| t2230510 发表于 2011-3-23 09:38 | 显示全部楼层
[b]to  ST_ARM:

我添加了下面的这段也不行。
  /* Configure and enable ADC interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
 楼主| t2230510 发表于 2011-3-23 09:38 | 显示全部楼层
是这个:
/* Configure and enable ADC interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
ST_ARM 发表于 2011-3-23 09:39 | 显示全部楼层
那你AD的初始化代码贴出来。
 楼主| t2230510 发表于 2011-3-23 10:07 | 显示全部楼层
/* Enable GPIOC clock                                                       */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

  /* Enable ADC1 clock                                                        */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
  
  /* Configure PC4 (ADC Channel14) as analog input                             */
  GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* ADC1 Configuration (ADC1CLK = 18 MHz) -----------------------------------*/
  ADC_InitStructure.ADC_Mode               = ADC_Mode_Independent;
  ADC_InitStructure.ADC_ScanConvMode       = DISABLE;
  ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
  ADC_InitStructure.ADC_ExternalTrigConv   = ADC_ExternalTrigConv_None;
  ADC_InitStructure.ADC_DataAlign          = ADC_DataAlign_Right;
  ADC_InitStructure.ADC_NbrOfChannel       = 1;
  ADC_Init(ADC1, &ADC_InitStructure);

  /* ADC1 Regular Channel14 Configuration                                      */
  ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_55Cycles5);
  ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
  ADC_Cmd   (ADC1, ENABLE);             /* Enable ADC1                        */
  ADC_SoftwareStartConvCmd(ADC1,ENABLE);/* Start ADC1 Software Conversion     */
 楼主| t2230510 发表于 2011-3-23 10:20 | 显示全部楼层
ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);// 使能中断
 楼主| t2230510 发表于 2011-3-23 10:22 | 显示全部楼层
这段代码就是在stm32库文件V1.0中的ADC例程里,例程里用的是DMA方式。我把DMA关掉了,并开启了中断。其他的都没动。
ST_ARM 发表于 2011-3-23 10:33 | 显示全部楼层
你的板子上的boot0和boot1引脚是如何连接的?

NVIC初始化时,是否执行了一下代码?
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);        // Set the Vector Table base location at 0x0800000
hello_fengxin 发表于 2011-3-23 10:36 | 显示全部楼层
找一下工程模板,这个理论上应该不需要DMA就可以连续采集数据的
 楼主| t2230510 发表于 2011-3-23 10:51 | 显示全部楼层
to  ST_ARM:
sw1和sw2开关分别是  1和 0 。

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  是执行了的。
ST_ARM 发表于 2011-3-23 11:00 | 显示全部楼层
sw1和sw2开关全部置为 0,我无法确定哪个是连在boot0上的,应用中要保证boot0引脚上的信号为低电平。
 楼主| t2230510 发表于 2011-3-23 11:09 | 显示全部楼层
why?
香水城 发表于 2011-3-23 11:25 | 显示全部楼层
to  ST_ARM:
sw1和sw2开关分别是  1和 0 。

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  是执行了的。
t2230510 发表于 2011-3-23 10:51


哈哈,你都没有贴出电路图,谁知道sw1和sw2开关分别是什么信号?
baidudz 发表于 2011-3-23 18:08 | 显示全部楼层
楼主贴出电路图看看
 楼主| t2230510 发表于 2011-3-24 17:37 | 显示全部楼层
就是英培特的板子 ,型号 EMSTM32V1 .
http://www.stmfans.com/html/43/t-2543.html
lcjj527 发表于 2013-11-20 11:04 | 显示全部楼层
谢谢分享。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

38

帖子

0

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

11

主题

38

帖子

0

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