高级会员

- 积分
- 993
- 金钱
- 993
- 注册时间
- 2017-8-11
- 在线时间
- 137 小时
|
本帖最后由 笨鸟想飞 于 2020-3-27 13:50 编辑
STM32F103(战舰)ADC多通道采集这个版块,网上资源很多,论坛也有很多
简单得汇总了一下,同时也注释了一些通俗的讲解。
因为最近刚好有各项目的一部分涉及到多通道ADC同时采集,
所以刚好用原子哥的demo写法改了一个版本,希望新入门的同学容易读懂
废话不多说,直接讲解。
其实单通道ADC转换变为多通道,很简单。(战舰ZET芯片有多达21个12位的ADC通道哟,想更多ADC可以外接多通道硬件电路实现,当然追求时效性跟低功耗的话,不建议单机接太多)
无非新增加两步:1、使能对应的更多的ADC引脚 2、循环体更新打印(存储)数值
1、使能,在adc.c添加
更改通道数量- ADC_InitStructure.ADC_NbrOfChannel = 12; //顺序进行规则转换的ADC通道的数目
复制代码 2.main.c循环体打印- for(k=0;k<12;k++)
- {
- LCD_ShowxNum(280,30+60*k,ADC1ConvertedVoltage[k],4,24,0); //显示ADCC采样后的原始值
- Voltage[k] = ADC1ConvertedVoltage[k]*3.3/4096;
- i=Voltage[k]; //赋值整数部分给adcx变量,因为adcx为u16整形
- LCD_ShowxNum(278,60+60*k,i,1,24,0); //显示电压值的整数部分,3.1111的话,这里就是显示3
- Voltage[k]-=i; //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111
- Voltage[k]*=1000; //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。
- LCD_ShowxNum(302,60+60*k,Voltage[k],3,24,0X80); //显示小数部分(前面转换为了整形显示),这里显示的就是111.
- }
复制代码
我写的是12通道,以此类推,多个通道都一样的操作
小白傻瓜帖,只求新手少走弯路,同时也为自己做一个技术笔记demo!!!
|
|