野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4491|回复: 7

ADC采集数据,串口打印乱码

[复制链接]
发表于 2023-2-24 22:01:19 | 显示全部楼层 |阅读模式
这是我的主函数和ADC配置的函数,目前不清楚为什么在串口打印出来会乱码。


uint16_t ADC_Value;


int main(void)
{
       
        Serial_Init();
        AD_Init();


        while(1)
{
        ADC_Value = AD_GetValue();
       
        printf("\r\n %c",ADC_Value);
        delay_ms(100);
}
}




void AD_Init(void)
{
//开启adc时钟,使能GPIOA
        RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN,ENABLE );
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );
       
//预分频,主频72M,adc最高14M
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);

        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输入模式,防止干扰,ADC专属模式
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Speed  = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);

//规则化通道,16通道,但只有一位数据可读,避免数据覆盖,使用DMA转运数据
//通道0,序列1,55.5转换时间
        ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5);

        ADC_InitTypeDef ADC_InitStructure;
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE ;//连续转换还是单次转换,单次转换
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐,高4位为0
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//外部触发源,该处使用软件触发,则无外部触发
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//独立模式,一个ADC转换
        ADC_InitStructure.ADC_NbrOfChannel = 1;//扫描模式下,使用的通道数
        ADC_InitStructure.ADC_ScanConvMode = DISABLE ;//扫描转换模式,非扫描

        ADC_Init(ADC1,&ADC_InitStructure);

        ADC_Cmd(ADC1,ENABLE);

//开启转换,要求校准
        ADC_ResetCalibration(ADC1);//复位校准
        while(ADC_GetResetCalibrationStatus(ADC1) == SET );//
        ADC_StartCalibration(ADC1);
        while(ADC_GetCalibrationStatus(ADC1) == SET);
       
}

uint16_t AD_GetValue(void)
{
        ADC_SoftwareStartConvCmd(ADC1,ENABLE);
        while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == RESET);
        return ADC_GetConversionValue(ADC1);
}




野火论坛202302242200452873..png
回复

使用道具 举报

发表于 2023-2-25 08:40:10 | 显示全部楼层
波特率?
野火论坛202302250840002931..png
回复

使用道具 举报

 楼主| 发表于 2023-2-25 08:49:59 | 显示全部楼层

波特率设置的是对应的,一直都是9600
回复 支持 反对

使用道具 举报

发表于 2023-2-25 09:32:28 | 显示全部楼层
如果能收到,一般是设置问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-25 10:30:38 | 显示全部楼层
羊烊 发表于 2023-2-25 09:32
如果能收到,一般是设置问题。

好的,我再看一看
回复 支持 反对

使用道具 举报

发表于 2023-2-27 09:40:03 | 显示全部楼层
printf("\r\n %c",ADC_Value);为什么要这样打印字符,直接打印数字不行吗?
回复 支持 反对

使用道具 举报

发表于 2023-2-27 11:08:48 | 显示全部楼层
直接%d,或者把串口助手切成hex显示
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-5 20:04:12 | 显示全部楼层
a5820736 发表于 2023-2-27 11:08
直接%d,或者把串口助手切成hex显示

通道设置错误,谢谢回答
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-7 22:32 , Processed in 0.079564 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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