STM32
直播中

王雪

7年用户 974经验值
私信 关注
[问答]

使用cubeMX工具开发一个websever的项目,为什么ADC采样在web上没有显示?

各位大侠兄弟我最近正在使用cubeMX 工具开发一个websever的项目,
程序各个功能运行争产,但唯独ADC 采样在web上没有显示,请问谁有相关成功经验分享一下.
一下是ADC handle代码,httpd.c我没有做修改,直接调用相关函数,LED页面可以控制,工作正常,
就是涉及到SSI 有问题。
u16_t ADC_Handler(int iIndex, char *pcInsert, int iInsertLen)
{

  /* We have only one SSI handler iIndex = 0 */
  if (iIndex ==0)
  {  
    char Digit1=0, Digit2=0, Digit3=0, Digit4=0;
    uint32_t ADCVal = 0;        
     /* configure ADC if not yet configured */
     HAL_ADC_Start( hadc1);
     HAL_ADC_PollForConversion( hadc1, 10);
     /* get ADC conversion value */
     ADCVal =  HAL_ADC_GetValue( hadc1);
     
     /* convert to Voltage,  step = 0.8 mV */
     ADCVal = (uint32_t)(ADCVal * 0.8);  
     /* get digits to display */
  //   printf("%srn", ADCVal);
     Digit1= ADCVal/1000;
     Digit2= (ADCVal-(Digit1*1000))/100;
     Digit3= (ADCVal-((Digit1*1000)+(Digit2*100)))/10;
     Digit4= ADCVal -((Digit1*1000)+(Digit2*100)+ (Digit3*10));
        
     /* prepare data to be inserted in html */
     *pcInsert       = (char)(Digit1+0x30);
     *(pcInsert + 1) = (char)(Digit2+0x30);
     *(pcInsert + 2) = (char)(Digit3+0x30);
     *(pcInsert + 3) = (char)(Digit4+0x30);  
   
    /* 4 characters need to be inserted in html*/
    return 4;
  }

  return 0;
}


回帖(2)

阮浙临

2024-4-11 09:37:16
楼主最好是用仿真的方式看一下,调用这个函数后,执行结果是否按格式填充到数据空间中,注意index这个值,入口是否为0。
数字转换,可以使用sprintf进行,这样也能避免自己写代码错误后,不能正确显示内容。
举报

莫联雪

2024-4-11 14:57:33
你好,根据你提供的代码和描述,我无法确定为什么ADC采样在Web上没有显示。可能是以下一些原因导致:

1. ADC采样未成功:请确保ADC初始化和采样配置正确,并使用调试工具检查ADC是否成功采样到期望的值。

2. SSI处理函数存在问题:请检查ADC_Handler函数的实现是否正确,并确保pcInsert和iInsertLen参数正确传递到函数中。

3. HTML页面中的SSI标签问题:请确保在HTML页面中正确添加了SSI标签,以便Web服务器能够调用ADC_Handler函数并显示ADC采样值。

4. CubeMX配置问题:请确保在CubeMX中正确配置了ADC和Web服务器相关的选项。

建议你进行逐步调试和排查,逐个验证以上可能的原因。可以使用调试工具来检查ADC采样是否成功,同时查看Web服务器日志或浏览器控制台可能也有相关的错误信息。另外,你可以参考官方文档或在线社区寻找与ADC采样和Web服务器相关的成功经验和问题解决方案。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分