赞
踩
tips:sprint函数
【DMA下一篇】
[其他相关函数]
ADC启动与停止
//查询,阻塞方式,启动ADC
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
//查询,阻塞方式,停止ADC
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
//中断,非阻塞方式,启动ADC
HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
//中断,非阻塞方式,停止ADC
HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
ADC状态返回【转换好了为HAL_OK】
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
参数1:hadc,ADC实例指针。
参数2:Timeout,超时时间。
返回值:HAL_StatusTypeDef,函数执行状态。
ADC转换结果读取
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
参数1:hadc,ADC实例指针。
返回值:uint32_t,ADC转换结果。
void UR1_Send_Info()
{
sprintf((char *)str_buff,"采样值:%d,电压值:%d.%d%dV\r\n",ADC0_Value,ADC0_Volt/100,(ADC0_Volt%100)/10,ADC0_Volt%10);
HAL_UART_Transmit(&huart1,str_buff,sizeof(str_buff),10000);
}
1.【查询方式-阻塞】
void Get_ADC_Value() { HAL_ADC_Start(&hadc1); LED1_ON(); if(HAL_OK == HAL_ADC_PollForConversion(&hadc1,10)) { ADC0_Value = HAL_ADC_GetValue(&hadc1); ADC0_Volt = ADC0_Value * 330 / 4096; } UR1_Send_Info(); LED1_OFF(); HAL_ADC_Stop(&hadc1); } ******************************************************************** ******************************************************************** //在mian()函数中添加以下代码: /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { Get_ADC_Value(); //启动一个阻塞式的ADC转换并读取数据 UR1_Send_Info(); //向上位机发生采样值和电压值 HAL_Delay(500); //延时0.5秒,再进行下一次ADC采样 /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
2.【中断方式-非阻塞】
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { if(hadc->Instance == ADC1) { ADC0_Value = HAL_ADC_GetValue(&hadc1); //读取ADC转换结果 ADC0_Volt = ADC0_Value * 330 / 4096; //将采样值换算成电压值 UR1_Send_Info(); //向上位机发生ADC采样信息 LED1_OFF(); //关闭LED1采样指示灯 } } ******************************************************************** ******************************************************************** //在mian()函数中添加以下代码: /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { HAL_ADC_Start_IT(&hadc1); //启动一个非阻塞式的ADC转换并读取数据 LED1_ON(); //点亮LED1采样指示灯 HAL_Delay(500); //延时0.5秒,再进行下一次ADC采样 /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
注:
这是我的学习笔记。
来自B站视频(av号:av87017878)
这个UP的原博客为:https://www.xmf393.com/2020/02/10/20200210/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。