gpt4 book ai didi

c - 显示 MSP 430 错误值

转载 作者:太空狗 更新时间:2023-10-29 16:00:07 34 4
gpt4 key购买 nike

我正在开发压力测量装置。我使用过 MSP430F133 芯片并使用 IAR 嵌入式工作台。它以 3 个不同的单位显示压力。

我取了 32 个样本并取平均值。 P5上的单位选择,根据选择的单位计算输出值并显示在LCD上。

现在“IN WC”单元显示输入的二进制平均值,仅供分析。

问题:在默认单位(MM WC)中,值显示正确,但在测试情况下,当压力释放时,它会下降,LCD 显示如下

+31.8
+31.7
+31.6
+31.5
+31.4
+31.3
+31.2
+31.2
+31.1
+31.5 (wrong reading randomly between *.4 to *.7)
+30.9

如您所知,显示了一个错误值,我无法找出原因。

最佳答案

在下面的代码中 ptiveValue = value 和 d1 = value 所以 d2 总是 0 然后在你的循环中你有 对于 (i=0; i<= 3||res[i]!='\0'; i++)应该是 对于 (i=0; i<= 3&&res[i]!='\0'; i++)所以它总是打印出缓冲区中剩下的而不是你想要的

错误代码:

if (cntd <= 4)
{
d2 = (unsigned int) abs((ptiveValue - d1) * 10000); // get 4 digits of real part
itoa1(d2, res, &cntreal);
for (i=0; i<= 3||res[i]!='\0'; i++)
{
wr_lcd_dr(res[i]);

}
}

固定代码

if (cntd <= 4)
{
// get 4 digits of real part
d2 = (unsigned int) ((ptiveValue - (unsigned int)(d1)) * 10000);
itoa1(d2, res, &cntreal);
for (i=0; (i<= 3) && (res[i]!='\0'); i++)
{
wr_lcd_dr(res[i]);
}
}

您还会覆盖您的缓冲区并可能产生奇怪的行为。

unsigned short Adcinb[32];
for (i = 0; i <= 63; i++)
Adcinb[i] = 3180;

应该是

unsigned short Adcinb[32];
for (i = 0; i < 32; i++)
Adcinb[i] = 3180;

关于c - 显示 MSP 430 错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592029/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com