lun_shan 2023-03-17 15:22 采纳率: 42.9%
浏览 11
已结题

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

单片机小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);
  }
  
}
  • 写回答

3条回答 默认 最新

  • 追cium 2023-03-17 15:39
    关注

    参考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);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月25日
  • 已采纳回答 3月17日
  • 创建了问题 3月17日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度