打印
[其他ST产品]

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

[复制链接]
771|70
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这是我的主函数和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);
}

使用特权

评论回复
沙发
V853| | 2023-3-20 10:00 | 只看该作者
printf("\r\n %c",ADC_Value);改成printf("\r\n %d",ADC_Value);试试

使用特权

评论回复
板凳
朝生| | 2023-3-20 10:01 | 只看该作者
uint16_t ADC_Value;是16位类型的,怎么能用%c输出呢?

使用特权

评论回复
地板
软核硬核| | 2023-3-20 10:01 | 只看该作者
你printf的输出语句有问题,可以参考楼上的意见。

使用特权

评论回复
5
sonicll| | 2023-3-20 14:11 | 只看该作者
这个是C语言使用的问题,其实和ADC本身没有关系

使用特权

评论回复
6
AloneKaven| | 2023-3-23 23:39 | 只看该作者
print语句有问题吧

使用特权

评论回复
7
chenqianqian| | 2023-3-26 10:38 | 只看该作者
printf 函数的格式有点问题吧

使用特权

评论回复
8
morrisk| | 2023-4-6 20:02 | 只看该作者
printf("\r\n %c",ADC_Value);改成printf("\r\n %d",ADC_Value);试试

使用特权

评论回复
9
supernan| | 2023-4-6 20:03 | 只看该作者
uint16_t ADC_Value;是16位类型的,怎么能用%c输出呢?

使用特权

评论回复
10
xxrs| | 2023-4-6 20:04 | 只看该作者
你printf的输出语句有问题,可以参考楼上的意见。

使用特权

评论回复
11
zhenykun| | 2023-4-6 20:07 | 只看该作者
这个是C语言使用的问题,其实和ADC本身没有关系

使用特权

评论回复
12
morrisk| | 2023-4-6 20:09 | 只看该作者
print语句有问题吧

使用特权

评论回复
13
dengdc| | 2023-4-6 20:10 | 只看该作者
printf 函数的格式有点问题吧

使用特权

评论回复
14
heweibig| | 2023-4-6 20:11 | 只看该作者
怎么能用%c输出呢?

使用特权

评论回复
15
香水城| | 2023-4-7 17:06 | 只看该作者
你的PRINTF是基于什么输出的?

半主机? uart ?

还有 你的Printf格式要斟酌下,其它同仁也给出了建议。



使用特权

评论回复
16
SantaBunny| | 2023-4-9 13:51 | 只看该作者
printf的输出语句有问题

使用特权

评论回复
17
jimmhu| | 2023-4-9 14:40 | 只看该作者
你转换的adc有问题的吗              

使用特权

评论回复
18
adolphcocker| | 2023-4-9 15:17 | 只看该作者
把Use MicroLIB 选项勾上  

使用特权

评论回复
19
bartonalfred| | 2023-4-9 15:26 | 只看该作者
是不是波特率配置的不正确呢              

使用特权

评论回复
20
beacherblack| | 2023-4-9 15:33 | 只看该作者
串口助手的通信参数是否和板卡的一致;串口线和接口是否牢固

使用特权

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

本版积分规则

914

主题

2368

帖子

4

粉丝