蓝桥杯物联网设计与研发(基础实验)EX12.ADC转换实验
基于省赛资源套装-STM32L071微控制器
一、STM32CubeMX配置
外设配置
![](https://img-blog.csdnimg.cn/img_convert/31f18dc180d93b1035fe7cb558e1c07b.png)
![](https://img-blog.csdnimg.cn/img_convert/87ecc3f30e171460a080d6dccc071b30.png)
时钟配置
![](https://img-blog.csdnimg.cn/img_convert/6690673e2c8f5d49991b8941bffefc6b.png)
系统时钟采用4.194MHz时钟
二、Keil5程序编写
在USER CODE BEGIN PV和USER CODE END PV之间添加以下代码
float ADC_Value =0;
uint8_t ADC_Value_Send[20]={0};
在USER CODE BEGIN 2和USER CODE END 2之间添加以下代码
HAL_ADC_Start(&hadc);
3.在USER CODE BEGIN 3和USER CODE END 3之间添加以下代码
ADC_Value=HAL_ADC_GetValue(&hadc)*(3.3/4095);
sprintf((char*)ADC_Value_Send,"ADC_Value : %.2f",ADC_Value);
HAL_UART_Transmit(&huart2,ADC_Value_Send,20,500);
HAL_Delay(1000);
4.HAL_ADC库函数解析
函数名称 | HAL_ADC_Start (ADC_HandleTypeDef * hadc) |
函数作用 | 启用 ADC,开始常规组的转换。 |
参数 | ADC柄口 |
函数名称 | HAL_ADC_GetValue (ADC_HandleTypeDef * hadc) |
函数作用 | 获取ADC常规组转换结果。 |
参数 | ADC柄口 |
5.HAL_UART库函数解析
函数名称:HAL_UART_Receive (UART_HandleTypeDef * huart, uint8_t * pData, uint16_t Size, uint32_t Timeout)
函数作用:在阻塞模式下发送一定数量的数据
参数 | 功能 |
huart | UART柄口 |
pData | 指向数据缓冲区的指针 |
Size | 要发送的数据量 |
Timeout | 允许超时持续时间 |
6.sprintf函数解析
sprintf指的是字符串格式化命令,函数声明为 int sprintf(char *string, char *format [,argument,...]);,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用 snprintf函数,该函数可对写入字符数做出限制。
参数 | 功能 |
string | 这是指向一个字符数组的指针,该数组存储了 C 字符串 |
format | 这是字符串,包含了要被写入到字符串 str 的文本 |
argument | 根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。 |