⑨【蓝桥杯】STM32G4嵌入式竞赛实训平台(CT117E-M4)学习——ADC
本文将介绍嵌入式竞赛实训平台(CT117E-M4)开发板上ADC的使用。
·
写在前面——
本文将介绍嵌入式竞赛实训平台(CT117E-M4)开发板上ADC的使用。
目录
一、硬件平台
嵌入式竞赛实训平台(CT117E-M4)是北京国信长天科技有限公司设计、生产的一款“蓝桥杯全国软件与信息技术专业人才大赛–嵌入式设计与开发科目”专用竞赛平台,平台以STM32G431RBT6为主控芯片,预留扩展板接口,可为用户提供丰富的实验场景。
CT117E-M4产片图片
二、软件平台
KEIL5,STM32CubeMX
三、原理图
在硬件平台上,ADC一般用于测量R37,R38上的电压,查阅手册:
PB12 --> ADC1_IN11
PB15 --> ADC2_IN15
四、配置过程
基本配置步骤:
- 选择ADC1
- 选择通道11
- 选择独立模式
- 选择12位数据,右对齐
- 使能连续转换
- 规则通道如图设置
五、函数编写
1.常规方法:
ADC初始化后进行ADC校准:
ADC_HandleTypeDef hadc1; //声明两个ADC结构体
HAL_ADCEx_Calibration_Start(&hadc1); //AD校准
ADC获取函数:
uint16_t getADC1(void) // 获取PB12引脚的电压(对应R38电阻)
{
uint16_t adc = 0;
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 50); //等待转换完成,50为最大等待时间,单位为ms,可有可无应该
adc = HAL_ADC_GetValue(&hadc1);
return adc;
}
主函数:
char buf[64] = {0};
sprintf(buf , "ADC1(R38): %.2f V", (3.3 * getADC1())/4096);
LCD_DisplayStringLine(Line8, (uint8_t *)buf);
sprintf(buf , "ADC2(R37): %.2f V", (3.3 * getADC2())/4096);
LCD_DisplayStringLine(Line9, (uint8_t *)buf);
2.中断方法:
使用定时器:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //定时器中断回调
{
HAL_ADC_Start_IT(&hadc1); //定时器中断里面开启ADC中断转换,1ms开启一次采集
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) //ADC转换完成回调
{
HAL_ADC_Stop_IT(&hadc1); //关闭ADC
HAL_TIM_Base_Stop_IT(&htim3); //关闭定时器
AD_Value=HAL_ADC_GetValue(&hadc1); //获取ADC转换的值
printf("ADC1 Reading : %d \r\n",AD_Value);
printf("%.4f V\r\n",(AD_Value*3.3/4096)); //串口打印电压信息
HAL_TIM_Base_Start_IT(&htim3); //开启定时器
}
六、总结
ADC配合CubeMX,还是比较好用的~
更多推荐
所有评论(0)