打印
[STM32F1]

ADC单步调试

[复制链接]
681|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maxingyu|  楼主 | 2015-11-24 14:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下,在keil仿真调试,连续执行时,能看到ADC的转化值,存在AD_Value里。可是单步调试时,为什么到        volta[i] =(float) AD_Value[i]/4095*3.3; 不应该i变化一次,就能看到AD_Value里的值变化一下吗?看不到,直到执行6次后,在执行完printf语句后才能看到AD_Value里值才变化啊?ADC的采集不是应该先采到数据到AD_Value里吗?不知道我讲的清楚不?求大神解释下。我觉得问题就是ADC采集和数据处理的时序到底是怎么样的,是ADC采完一个数据,DMA就传送一个数据,然后就能处理一个吗?

#define ADC1_DR_Address    ((uint32_t)0x4001244C)
  u16 AD_Value[6];   
  float volta[6];
  u8 i;
  int main()
  {
          SystemInit();
          delay_init(72);             //延时初始化
        NVIC_Configuration();
        uart_init(9600);
        DMA_Config(DMA1_Channel1,(u32)ADC1_DR_Address,(u32)&AD_Value,6);//cndtr对应所开信道个数
          Adc_Init();
          DMA_Cmd(DMA1_Channel1, ENABLE);      //启动DMA通道
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);          //软件启动AD转换
                   while(1)
   {
                        for(i=0;i<6;i++)                        //循环6次转换AD值
                        {
                        volta[i] =(float) AD_Value[i]/4095*3.3;
                        }
                      printf("AD1=%d\n",AD_Value[0]);        printf("\r\n volta1 = %f V \r\n",volta[0]);
                        printf("AD2=%d\n",AD_Value[1]);        printf("\r\n volta2 = %f V \r\n",volta[1]);
                        printf("AD3=%d\n",AD_Value[2]);        printf("\r\n volta3 = %f V \r\n",volta[2]);
                        printf("AD4=%d\n",AD_Value[3]);        printf("\r\n volta4 = %f V \r\n",volta[3]);
                        printf("AD5=%d\n",AD_Value[4]);        printf("\r\n volta5 = %f V \r\n",volta[4]);
                        printf("AD6=%d\n",AD_Value[5]);        printf("\r\n volta6 = %f V \r\n",volta[5]);
                          delay_ms(500);
   }
  }


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

本版积分规则

38

主题

121

帖子

1

粉丝