单片机小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和自己的思路:
根据你提供的代码,光敏强度可以打印出来,但是需要注意以下几点:
在main函数的while循环中,调用了Resist_Test函数,但是未指定ADC进行转换的通道。需要使用HAL_ADC_Start(&hadc1)函数在while循环内启动ADC进行转换。
在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);
}
你这不是完整的代码吧 打不出来是光照强度的数值不对吗 还是连光照强度这几个字都没打印出来 如果这个都没打出来说明程序没执行到这里
不知道你这个问题是否已经解决, 如果还没有解决的话: