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

使用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日

悬赏问题

  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型