专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
STM32H743 ADC1和ADC3一起使用为什么不正常
2019-07-20 01:24
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
6344
8
1242
实验21 内部温度传感器实验
实验20 ADC实验
把2个实验合并之后为什么结果不正常。
找了半天找不到原因.
注释掉 读取ADC1的代码时候,ADC3就正常了(没有注释掉初始化)
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
51cc
2019-07-20 12:21
本帖最后由 51cc 于 2019-6-9 20:46 编辑
ADC.C 和ADC.H用的是原版代码
如果把第一段代码放在if(0){}里面,ADC3结果正常
以下代码不正常:
以下是main 读取ADC的代码
//-----------------ADC--------------------------
adcx=Get_Adc_Average(ADC1_Handle,ADC_CHANNEL_19,20);//获取通道19的转换值,20次取平均
LTCD_ShowxNum(120,40,adcx,5,16,0); //显示ADCC采样后的原始值
temp=(float)adcx*(3.3/65536); //获取计算后的带小数的实际电压值,比如3.1111
adcx=temp; //赋值整数部分给adcx变量,因为adcx为u16整形
LTCD_ShowxNum(300+8*9,40,adcx,1,16,0); //显示电压值的整数部分,3.1111的话,这里就是显示3
temp-=adcx; //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111
temp*=1000; //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。
LTCD_ShowxNum(300+8*9+8+8,40,temp,3,16,0X80); //显示小数部分(前面转换为了整形显示),这里显示的就是111.
tempCPU=Get_Temprate(); //得到温度值
if(tempCPU<0)
{
tempCPU=-tempCPU;
LTCD_ShowString(450+8*4,20,16,16,16,"-"); //显示负号
}else LTCD_ShowString(450+8*4,20,16,16,16," "); //无符号
printf("cpu:%d ",tempCPU);
LTCD_ShowxNum(450+8*5,20,tempCPU/100,2,16,0); //显示整数部分
LTCD_ShowxNum(450+8*8,20,tempCPU%100,2,16,0); //显示小数部分
加载中...
查看其它8个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
ADC.C 和ADC.H用的是原版代码
如果把第一段代码放在if(0){}里面,ADC3结果正常
以下代码不正常:
以下是main 读取ADC的代码
//-----------------ADC--------------------------
adcx=Get_Adc_Average(ADC1_Handle,ADC_CHANNEL_19,20);//获取通道19的转换值,20次取平均
LTCD_ShowxNum(120,40,adcx,5,16,0); //显示ADCC采样后的原始值
temp=(float)adcx*(3.3/65536); //获取计算后的带小数的实际电压值,比如3.1111
adcx=temp; //赋值整数部分给adcx变量,因为adcx为u16整形
LTCD_ShowxNum(300+8*9,40,adcx,1,16,0); //显示电压值的整数部分,3.1111的话,这里就是显示3
temp-=adcx; //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111
temp*=1000; //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。
LTCD_ShowxNum(300+8*9+8+8,40,temp,3,16,0X80); //显示小数部分(前面转换为了整形显示),这里显示的就是111.
tempCPU=Get_Temprate(); //得到温度值
if(tempCPU<0)
{
tempCPU=-tempCPU;
LTCD_ShowString(450+8*4,20,16,16,16,"-"); //显示负号
}else LTCD_ShowString(450+8*4,20,16,16,16," "); //无符号
printf("cpu:%d ",tempCPU);
LTCD_ShowxNum(450+8*5,20,tempCPU/100,2,16,0); //显示整数部分
LTCD_ShowxNum(450+8*8,20,tempCPU%100,2,16,0); //显示小数部分
一周热门 更多>