OpenEdv-开源电子网

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

[阿波罗F767] 为何将ADC的结果值存入输出打印值不对?

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2019-9-19
在线时间
1 小时
发表于 2021-6-12 11:28:24 | 显示全部楼层 |阅读模式
1金钱
用PC端串口软件读取ADC的转换值,发现如果将ADC结果寄存器(ADC_RES和ADC_RESL)的值直接打印输出是没有问题的,但是如果将其赋值给数组,再打印出来显示的值就不对了,请问直接将ADC_RES和ADC_RESL的值赋值给数组需要注意什么,为何存入数组再打印出来就有问题?
===========================
① 将ADC结果存入字符型数组(定义unsigned char txbuf[3];)再打印的代码:
打印结果是通道号 01、ADC_RES为 80、ADC_RESL为 00 ,这个打印出来的ADC结果不对。

while(1)
{
      GetADC_Result(1);    //1通道的ADC转换
      txbuf[0] = 1;            //将通道号赋值给数组第0个元素
      txbuf[1] = ADC_RES;   //将ADC的高8位赋值给数组第1个元素
      txbuf[2] = ADC_RESL & 0X03;  /将ADC的低2位赋值给数组第1个元素
      SendUart(txbuf[0]);         //发送通道号到PC
      SendUart(txbuf[1]);        //发送高8位ADC值到PC
      SendUart(txbuf[2]);       //发送低2位ADC值到PC               
}
===================================
② 直接打印的代码:
打印结果是通道号 01、ADC_RES为 6B、ADC_RESL为03 ,这个打印结果没有问题,是正确的采样值。


while(1)
{
     GetADC_Result(1);    //1通道的ADC转换
     SendUart(1);            //发送通道号到PC
     SendUart(ADC_RES);   //发送高8位ADC值到PC
     SendUart(ADC_RESL]);  //发送低2位ADC值到PC
                       
}


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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 08:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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