实验器材:野火STM32 MINI开发板
任务目标:利用ADC采集电位器的电压,并通过串口调试助手输出变化的电压值
任务内容:调整开发板上的滑动变阻器,将电压值通过开发板到PC进行显示(使用中断方式)
该部分内容与使用轮询方式的大部分内容相同,如下仅撰写修改的地方,其他内容请参考(12条消息) 使用轮询方式进行ADC转换_yufeng4108的博客-CSDN博客
一、CubeMX配置
3.外设配置
3.3 Analog 设置
仅修改如图所示部分,其他内容不变
开启ADC1的全局中断
3.4 Timers设置
按照下图1-3进行设置,每次中断为500ms,Trigger Event Selection选择Update Event
二 Cube IDE程序编写
1. 启动ADC、中断及打印提示用语
/* USER CODE BEGIN 2 */
HAL_ADC_Start_IT(&hadc1);
HAL_TIM_Base_Start(&htim8);
printf("******ADC Function*********\n");
/* USER CODE END 2 */
2.While循环函数
该部分不需要内容填写
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
3.中断回调函数
/* USER CODE BEGIN 4 */
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, HAL_MAX_DELAY);
return ch;
}
GETCHAR_PROTOTYPE
{
uint8_t ch;
HAL_UART_Receive(&huart1,(uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
if(hadc->Instance == ADC1)
{
val=HAL_ADC_GetValue(&hadc1) ;
Volt=3300*val/4096;
printf("Volt: %ldmV\r\n",Volt);
}
}
/* USER CODE END 4 */
4. 实验结果