[开发工具] STM32CubeMX-21 | 使用ADC读取电压值

[复制链接]
 楼主| parameters 发表于 2020-4-13 15:42 | 显示全部楼层
编写读取数据的测试代码
修改main函数如下:
  1. int main(void)
  2. {
  3.     /* USER CODE BEGIN 1 */
  4.     uint16_t i = 0;
  5.     uint16_t adc_value = 0;
  6.     float vol = 0.0;
  7.     /* USER CODE END 1 */

  8.     HAL_Init();
  9.     SystemClock_Config();

  10.     MX_GPIO_Init();
  11.     MX_DAC1_Init();
  12.     MX_USART1_UART_Init();
  13.     MX_ADC1_Init();

  14.     /* USER CODE BEGIN 2 */
  15.     printf("DAC Test...\r\n");
  16.     HAL_DAC_Start(&hdac1, DAC_CHANNEL_2);
  17.     /* USER CODE END 2 */

  18.     /* Infinite loop */
  19.     /* USER CODE BEGIN WHILE */
  20.     while (1)
  21.     {
  22.     /* USER CODE END WHILE */

  23.     /* USER CODE BEGIN 3 */
  24.     for(i = 0; i < 4096; i++)
  25.     {
  26.         HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_2, DAC_ALIGN_12B_R, i);
  27.         HAL_Delay(2);
  28.         if(i%1024 == 0)
  29.         {
  30.             /* 使用ADC采样 */
  31.             HAL_ADC_Start(&hadc1);                    //启动ADC单次转换
  32.             HAL_ADC_PollForConversion(&hadc1, 50);    //等待ADC转换完成
  33.             adc_value = HAL_ADC_GetValue(&hadc1);     //读取ADC转换数据
  34.             vol = ((double)adc_value/4096)*3.3;
  35.             printf("adc_value = %d, vol = %.2fV.\n", adc_value, vol);
  36.         }
  37.     }

  38.     printf("DAC test finish, test again!\r\n");
  39.     }
  40.     /* USER CODE END 3 */
  41. }
 楼主| parameters 发表于 2020-4-13 15:43 | 显示全部楼层
159075e94182e99b17.png

至此,我们已经学会如何使用ADC读取DAC输出引脚的电压值。
八层楼 发表于 2020-5-7 17:59 | 显示全部楼层
非常感谢楼主分享
观海 发表于 2020-5-7 17:59 | 显示全部楼层
电压基准选的什么呀
guanjiaer 发表于 2020-5-7 17:59 | 显示全部楼层
被采样信号频率?
heimaojingzhang 发表于 2020-5-7 18:00 | 显示全部楼层
应该用的单次采样
keaibukelian 发表于 2020-5-7 18:00 | 显示全部楼层
非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部