OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6622|回复: 6

为什么实现不了AD采样串口输出?

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-5-9
在线时间
3 小时
发表于 2021-5-9 21:13:55 | 显示全部楼层 |阅读模式
1金钱
代码如下,调了半天了,用xcom一打开串口收到的全是“电压值为0.00000”
extern u16 result;
int main()
{        float v;
        delay_init();
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(115200);
        Adc_Init();
        Led_Init();
        while(1)
        { LED0=!LED0;
                delay_ms(3000);

                v=(float)result*3.3/4096.0;
  printf("\nμçÑ1ÖμÎa:%f\n",v);


        }
       
       
}


u16 result;

void ADC_GPIO_Config()
{        GPIO_InitTypeDef GPIO_success;
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//ê1GPIOA¿úê±Öó
       
       
        GPIO_success.GPIO_Mode=GPIO_Mode_AIN;
        GPIO_success.GPIO_Pin =GPIO_Pin_1;
        GPIO_success.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_success);//ê1ÄüGPIOA¿ú£¬Ä£ÄaêäèëÄ£ê½

}



void ADC_NVIC_Config()
{
        NVIC_InitTypeDef NVIC_success;
       
        NVIC_success.NVIC_IRQChannel =ADC1_2_IRQn;
        NVIC_success.NVIC_IRQChannelCmd =ENABLE;
        NVIC_success.NVIC_IRQChannelPreemptionPriority =1;
        NVIC_success.NVIC_IRQChannelSubPriority =1;
  NVIC_Init(&NVIC_success);
       


}
void Adc_Congfig()
{

        ADC_InitTypeDef  ADC_success;
       

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//ê1ÄüADC1ê±Öó
       
        ADC_DeInit(ADC1);  //¸′λADC1,½«íaéè ADC1 μÄè«2¿¼Ä′æÆ÷ÖØéèÎaè±ê¡Öμ
       
       
        ADC_success.ADC_ContinuousConvMode =DISABLE;
        ADC_success.ADC_DataAlign =ADC_DataAlign_Right;
        ADC_success.ADC_ExternalTrigConv =ADC_ExternalTrigConv_None;
        ADC_success.ADC_Mode =ADC_Mode_Independent;
        ADC_success.ADC_NbrOfChannel =1;
        ADC_success.ADC_ScanConvMode = DISABLE;
        ADC_Init(ADC1,&ADC_success);
       
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);//ê±ÖóÔ¤·ÖÆμÏμêyÎa6
       
        ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5 );
        ADC_SoftwareStartConvCmd(ADC1,ENABLE);
       
        ADC_ITConfig(ADC1, ADC_IT_EOC,ENABLE);

        ADC_Cmd(ADC1,ENABLE);
        ADC_ResetCalibration(ADC1);        //ADCD£×¼
        while(ADC_GetResetCalibrationStatus(ADC1)){};
  ADC_StartCalibration(ADC1);
  while(ADC_GetCalibrationStatus(ADC1));
               

}

void ADC1_2_IRQHandler()
{
/* ???????? */
        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//μè′yADC×a»»
                result=ADC_GetConversionValue(ADC1);
        /* ?????? */
        ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);




}
/*u16 ADC_Return()
        {
       
        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//μè′yADC×a»»
        return ADC_GetConversionValue(ADC1);
       
}
*/
void Adc_Init()
{
ADC_GPIO_Config();
ADC_NVIC_Config();
        Adc_Congfig();
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8645
金钱
8645
注册时间
2020-5-11
在线时间
4100 小时
发表于 2021-5-10 10:07:25 | 显示全部楼层
你得找原因啊,比如result值是多少?是否进入了ADC1_2_IRQHandler?
不用中断而是用查询方式读取ADC是否正常?
专治疑难杂症
回复

使用道具 举报

4

主题

912

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4508
金钱
4508
注册时间
2019-9-4
在线时间
914 小时
发表于 2021-5-10 10:28:04 | 显示全部楼层
这样只放出这点代码看不出来什么问题。最好还是单步调试一下,定位到具体什么原因。你可以移植正点原子的例程的呀
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-5-9
在线时间
3 小时
 楼主| 发表于 2021-5-10 10:44:55 来自手机 | 显示全部楼层
LcwSwust 发表于 2021-5-10 10:07
你得找原因啊,比如result值是多少?是否进入了ADC1_2_IRQHandler?
不用中断而是用查询方式读取ADC是否正 ...

是不是改写代码后看输出情况来判断是哪一块出问题呢呢?这是不是就是调试的过程?
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2021-5-9
在线时间
3 小时
 楼主| 发表于 2021-5-10 10:45:45 来自手机 | 显示全部楼层
A571157242 发表于 2021-5-10 10:28
这样只放出这点代码看不出来什么问题。最好还是单步调试一下,定位到具体什么原因。你可以移植正点原子的例 ...

单步调试就是改变代码 然后每步排查bug吗?
回复

使用道具 举报

4

主题

912

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4508
金钱
4508
注册时间
2019-9-4
在线时间
914 小时
发表于 2021-5-10 10:46:48 | 显示全部楼层
ShenYO 发表于 2021-5-10 10:45
单步调试就是改变代码 然后每步排查bug吗?

用仿真器在KEIL上debug仿真调试
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8645
金钱
8645
注册时间
2020-5-11
在线时间
4100 小时
发表于 2021-5-10 10:52:47 | 显示全部楼层
ShenYO 发表于 2021-5-10 10:44
是不是改写代码后看输出情况来判断是哪一块出问题呢呢?这是不是就是调试的过程?

对呀......
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 09:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表