打印

STM32的AD采样

[复制链接]
6305|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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);

使用特权

评论回复
5
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);

使用特权

评论回复
6
ST_ARM| | 2011-3-23 09:39 | 只看该作者
那你AD的初始化代码贴出来。

使用特权

评论回复
7
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     */

使用特权

评论回复
8
t2230510|  楼主 | 2011-3-23 10:20 | 只看该作者
ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);// 使能中断

使用特权

评论回复
9
t2230510|  楼主 | 2011-3-23 10:22 | 只看该作者
这段代码就是在stm32库文件V1.0中的ADC例程里,例程里用的是DMA方式。我把DMA关掉了,并开启了中断。其他的都没动。

使用特权

评论回复
10
ST_ARM| | 2011-3-23 10:33 | 只看该作者
你的板子上的boot0和boot1引脚是如何连接的?

NVIC初始化时,是否执行了一下代码?
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);        // Set the Vector Table base location at 0x0800000

使用特权

评论回复
11
hello_fengxin| | 2011-3-23 10:36 | 只看该作者
找一下工程模板,这个理论上应该不需要DMA就可以连续采集数据的

使用特权

评论回复
12
t2230510|  楼主 | 2011-3-23 10:51 | 只看该作者
to  ST_ARM:
sw1和sw2开关分别是  1和 0 。

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  是执行了的。

使用特权

评论回复
13
ST_ARM| | 2011-3-23 11:00 | 只看该作者
sw1和sw2开关全部置为 0,我无法确定哪个是连在boot0上的,应用中要保证boot0引脚上的信号为低电平。

使用特权

评论回复
14
t2230510|  楼主 | 2011-3-23 11:09 | 只看该作者
why?

使用特权

评论回复
15
香水城| | 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开关分别是什么信号?

使用特权

评论回复
16
baidudz| | 2011-3-23 18:08 | 只看该作者
楼主贴出电路图看看

使用特权

评论回复
17
t2230510|  楼主 | 2011-3-24 17:37 | 只看该作者
就是英培特的板子 ,型号 EMSTM32V1 .
http://www.stmfans.com/html/43/t-2543.html

使用特权

评论回复
18
lcjj527| | 2013-11-20 11:04 | 只看该作者
谢谢分享。。。。。。。。。。

使用特权

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

本版积分规则

11

主题

38

帖子

0

粉丝