蓝桥杯(嵌入式)——ADC(模数转换)

1.分析原理图

如图我们可以看出ADC控制管脚为PB12与PB15,采集到的电压为可调电阻上所分压得到的电压。由芯片手册与Cube管脚设置界面可以看出,PB12为ADC1的通道11,PB15为ADC2的通道15。如原理图所示,两个采集端均存在跳线帽,若跳线帽拔掉,则无法正常工作。

2.使用STM32CubeMX软件生成keil工程文件

1.创建新工程

2.输入与选择正确的芯片

 

3.配置RCC,可勾选一个高速时钟,也可两个都勾选

4.设置调试模式,这边选择SW调试模式

5.配置ADC

1.ADC1通道选择IN11个通道,选择为SIngle-ended

2.Clock Prescaler选择为A2,Rank中把Sampling Time选择为640.5 Cycles

3.ADC2通道选择IN15个通道,选择为SIngle-ended

4.clock选择为A2,Rank中把Sampling Time选择为640.5 Cycles

6.设置时钟树,修改下图带框的地方

7.设置好配置,最后电机GENERATE CODE

3.代码

说明:建议不要去重新创建.C与.h文件,比较浪费时间,比赛还是得抓紧时间去编写程序代码,所有代码都在main.c中编写。这边建议在第151行与153行之间编写程序代码。

ADC程序:

ADC代码:
uint16_t getADC1(void)
{
	uint16_t adc = 0;
	
	HAL_ADC_Start(&hadc1);
	adc = HAL_ADC_GetValue(&hadc1);
	
	return adc;
}
uint16_t getADC2(void)
{
	uint16_t adc = 0;
	
	HAL_ADC_Start(&hadc2);
	adc = HAL_ADC_GetValue(&hadc2);
	
	return adc;
}

LCD显示程序:

	sprintf((char *)Lcd_Disp_String, "R37_Vol:%6.3fV",((((float)getADC2())/4096)*3.3));
	LCD_DisplayStringLine(Line7, Lcd_Disp_String);

//	sprintf((char *)Lcd_Disp_String, "R38_Vol:%6.3fV",((((float)getADC1())/4096)*3.3));
//	LCD_DisplayStringLine(Line6, Lcd_Disp_String);	

均值滤波代码:有时需要滤波处理的,可以参考一下。这边没有把ADC的数据放进去,其实也就是替换一下。

#define SPEED_RECORD_NUM 50 
float speed_Record[SPEED_RECORD_NUM]={0};

/*
 * 进行速度的平均滤波
 * 输入新采样到的速度,存放速度的数组,
 * 返回滤波后的速度
 */
float Speed_Low_Filter(float new_Spe,float *speed_Record)
{
    float sum = 0.0f;
	  float test_Speed = 0.0f;
    test_Speed = new_Spe;
    for(uint8_t i=SPEED_RECORD_NUM-1;i>0;i--)//将现有数据后移一位
    {
        speed_Record[i] = speed_Record[i-1];
        sum += speed_Record[i-1];
    }
    speed_Record[0] = new_Spe;//第一位是新的数据
    sum += new_Spe;
    test_Speed = sum/SPEED_RECORD_NUM;
    return sum/SPEED_RECORD_NUM;//返回均值
}

4.总结

本文主要讲述了蓝桥杯(嵌入式)——ADC的实现,如有错误等问题,请及时联系我,谢谢!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值