ADC(Analog to Digital Converters)是模数转换器的简称,作用是将各种模拟信号转化为数字信号进行处理。
一、学习目标
(1)学习目标:
利用stm32g474芯片上的ADC转换器将检测到的电压转化为数值,
并使用USB串口将ADC的值发送到串口软件助手
(2)学习准备:
1)硬件平台:基于stm32G474系列的电机控制板
2)软件平台:Clion IDE;STM32CubeMX(后续简称MX
3) 串口调试工具:串口调试助手
二、学习步骤
步骤一:配置ADC和USB
1)配置ADC参考b站博主keysking的视频,链接如下:
【STM32入门教程】ADC 模拟数字转换 ,超清晰动画讲解_哔哩哔哩_bilibili
2)配置USB串口和代码生成管理参考我上篇发布的文章:
步骤二:代码编辑与调试
1)打开main.c文件,在用户代码区包含需要的头文件
2)关于ADC采样这部分的代码我使用的是keysking的写法,不同的是我使用USB串口进行通信,因此在串口通信函数处有一些差异
int value = 0;//读取ADC值
float voltage = 0.0;//将ADC结果转换位电压值读取
char message[20]="";//message字符串用于串口输出拼接字符串
while (1)
{
HAL_ADC_Start(&hadc1);//
HAL_ADC_PollForConversion(&hadc1,HAL_MAX_DELAY);
value = HAL_ADC_GetValue(&hadc1);// 将ADC值读取到value变量中
voltage = (value / 4095.0 * 3.3);
sprintf(message,"ADC:%d %.2fV",value,voltage);
//sprintf 函数是 C 语言标准库中的一个函数,用于将格式化的数据写入字符串
//这行代码的执行结果将是一个字符串,其中包含 value 的整数值和 voltage 的浮点数值,格式化为 "ADC:整数 浮点数.00V" 的形式。
// 例如,如果 value 是 123,voltage 是 4.567,那么 message 将被设置为 "ADC:123 4.57V"
CDC_Transmit_FS((uint8_t*)message, strlen(message));
//函数CDC_Transmit_FS接受两个参数:一个指向要发送数据缓冲区的指针Buf和一个表示要发送数据长度的Len。
// 函数的返回值是一个uint8_t类型的结果,表示操作的状态。
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}