m0_66067230 2024-06-27 10:52 采纳率: 0%
浏览 26

使用stm32读取hlw8032的电压显示0

STM32收HLW8032测量数据并计算电流电压功率
在您写的这篇博客中,我也运用了相似的代码,但是在主函数中调用显示VR,读不出来数据,都是0,是为什么呢?


void USART1_IRQHandler(void)
{
    if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)        //判断是否是USART1的接收事件触发的中断
    {
        Serial_RXData[i++]=USART_ReceiveData(USART1);
        if((Serial_RXData[0] != 0x55)&&(Serial_RXData[0] != 0xF2))i = 0;
        if((i==2)&&(Serial_RXData[1]!=0x5A))i=0;
        if(i==24)
        {
            TEST=Serial_RXData[1];
            VR=(Serial_RXData[5]<<16)|(Serial_RXData[6]<<8)|Serial_RXData[7];
            Serial_RxFlag=1;
            i=0;
        }
        USART_ClearITPendingBit(USART1, USART_IT_RXNE);            //清除USART1的RXNE标志位
    }
    
}

uint8_t test;
uint32_t VRtest;
extern volatile uint32_t VR;
extern volatile uint8_t TEST;

    if(Serial_GetRxFlag()==1)
    {
        test=TEST;
        VRtest=VR;
    }

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-27 10:52
    关注

    引自免费微信小程序:皆我百晓生

    首先,我们需要确定问题所在。根据您的描述,您正在尝试从STM32的USART1发送一个测试数据,并期望从USART1接收到相应的响应。但是,在处理接收到的数据时,您遇到了问题,即VRTEST变量始终为0。

    要解决这个问题,我们需要确保在发送数据到USART1之前,VRTEST已经正确初始化并且可以被访问。此外,我们还需要检查在接收数据后,如何更新这些变量以反映实际测量结果。

    让我们逐步分析这个问题:

    1. 确保VRTEST已经被正确的初始化。

      extern volatile uint32_t VR;
      extern volatile uint8_t TEST;
      
    2. 在发送数据前,将VRTEST设置为适当的值。

      • 示例:您可以将VR初始化为当前电池电压(例如,通过测量),并将TEST初始化为当前的温度值(例如,通过测量)。
      uint32_t batteryVoltage;  // 示例:电池电压值
      uint32_t temperature;     // 示例:温度值
      
      // 初始化VR和TEST
      VR = batteryVoltage;
      TEST = temperature;
      
    3. 将这些变量与接收到的数据进行比较,以确定是否已成功接收数据。

      • 您可以在主函数中添加一个循环来逐个检查每个变量。
      while (!Serial_RxFlag) {
          if (Serial_GetRxFlag()) {
              // 如果接收到数据,则更新VR和TEST
              VR = TEST;
          }
      }
      
      // 更新VR和TEST
      VR += VRtest;
      TEST += TEST;
      
    4. 如果VRTEST中的任何一者不等于0,那么它们应该是正确的,因为它们包含了接收到的数据的一部分。

      • 如果两者都为0,那么可能是因为没有足够的数据到达USART1。

    综上所述,您可以按照上述步骤来调试您的代码,以便能够正确地接收和处理来自USART1的数据。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月27日