求看看光敏强度怎么打印出来

单片机小white,/.[]\-=
求。路。大帮忙看看为啥光敏强度打印不出来

#include "main.h"
#include "adc.h"
#include "gpio.h"
#include "stdio.h"                  // Device header


void SystemClock_Config(void);
/* USER CODE BEGIN 0 */
#define D0_SET() HAL_GPIO_WritePin(D0_GPIO_Port, D0_Pin, GPIO_PIN_SET)
#define D0_RESET() HAL_GPIO_WritePin(D0_GPIO_Port, D0_Pin,GPIO_PIN_RESET)

//ADC采样数值
typedef struct
{
 unsigned int adc_vol;//ADC测量的值
  int vol;//实际电压值
  
}RESIST;

RESIST resist_data;
void  HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
        resist_data.adc_vol=HAL_ADC_GetValue(hadc);//获取ADC转换结果
     resist_data.vol=resist_data.adc_vol*5/4095;//转换为电压值
}

void Resist_Test(void)
{
  if(resist_data.vol>2.5)
  {
    D0_RESET();
  }
  else
  {
    D0_SET();
  }
}

 while (1)
  {

    Resist_Test();
    printf("光照强度:%d\r\n", resist_data.vol);
  }
  
}

参考GPT和自己的思路:

根据你提供的代码,光敏强度可以打印出来,但是需要注意以下几点:

  1. 在main函数的while循环中,调用了Resist_Test函数,但是未指定ADC进行转换的通道。需要使用HAL_ADC_Start(&hadc1)函数在while循环内启动ADC进行转换。

  2. 在main函数的while循环中,使用printf函数打印光照强度值之前,需要确保ADC转换已经完成。可以使用HAL_ADC_PollForConversion函数进行等待。

修改后的代码示例如下:

while (1)
{
  HAL_ADC_Start(&hadc1);//启动ADC转换
  HAL_ADC_PollForConversion(&hadc1, 1000);//等待转换完成,最长等待时间为1000ms
  Resist_Test();
  printf("光照强度:%d\r\n", resist_data.vol);
}

你这不是完整的代码吧 打不出来是光照强度的数值不对吗 还是连光照强度这几个字都没打印出来 如果这个都没打出来说明程序没执行到这里

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^