This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C123GH6PM:我可以#39;t 使浮点值正常工作、我想...

Guru**** 2465890 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/662825/tm4c123gh6pm-i-can-t-get-the-floats-to-work-i-guess

器件型号:TM4C123GH6PM

您好!

首先,我完全感到困惑。 float 在其他模块中非常正常、但在主函数中、在声明 float32_t 变量(尝试使用 float)后、我甚至无法为该变量分配1.0f。 我正在使用 Keil、并且 FPU 已启用。 这一个模块和其他模块(浮动功能)具有相同的相关"包括"。 我已经检查过它们是否在那里工作!

我正在使用调试器、它告诉我变量设置为0。  

我们非常感谢您的任何建议。  

#include 
#include 
#include 
#include 

#include "driverlib/sysctl.h"
#include "settings.h"
#include "sampler.h"
#include "arm_math.h"
#include "mfive.h"


#include "arm_const_structs.h"

//int16_t data[7168];//test:sound "floatn.32









;/ints/spreratn=32、t/ints/simum_t_static /t/ints/simity = t/ints/simity void/t/ints/sime32_t/t/ints/simum_t/ints/simumt/t/t/ints/spratn=t/ints/simumt/ints/simum_t/ints/simumt/int_t/ints/simumt/ints/simumt/t/t/ints/sprat声音
int i = 0;
int j、k;
float32_t features[MFCC_SIZE];
float32_t Powers[word_length];
float32_t observations[word_length][mfcc_size];
float32_t cntbug_FRAME[256];//存储位置(adc_out - 2047)* 3.3 / 4095
float32_t pized_frame_prev[256];//上面的先前值的放置位置、更新
后 float32_t = t32_t;tintrat_t = 0.32_t =





1
;t32_t = 1、tinut = 1、tatfut = 0.32_t 1;t/t/tintruatfuatfuatfut = 1;t32_t = 1、t/t/t/tinuatfu32_t/t/t/t

uint16_t count = 0;

init_peripherals ();
init_Forward ();



while (1){

if (n = n_prev)//等待直到有新的样本批次准备就绪




;//以下原因是 ping_pong DMA if (n%2 = 1){for (j = 0;j < 256;j+)}(j_584_j](n%2 = 1)});j_框架0_08_j[0_04]

}
否则{
for (j = 0;j < 256;j++){
sized_frame[j]=(adc_out_1[j]- 2047)* 8.058608e-4;
}
}

arm_fill_F32 (0、input_F32_16kHz、BUFSIZE);//初始化输入数组以
// ful_f0_f32
为单位,因为其为"fis/"单位,且其值为"32为"f"单位,且为"fis",因为其值为"0ks"。 我们将帧//
'sived_frame_prev'覆盖阵列(256)的前半部分(256)样本,
//'sived_frame'覆盖后半部分(256 + 256 = 512样本)
(j = 0;j < 256;j++){
input_F32_16kHz[j * 2]= frame_prev_j[32_j]
;[j_16kHz]= 32_ref];输入*12_j_ref]

memcpy (sized_frame_prev、sized_frame、256 * sizeof (* sized_frame));

get_mfc (input_F32_16kHz、 特征、幂+ i);
//memcpy (observations[i]、特征、12 * sizeof (*特征));
arm_copy_f32 (特征、观测[i]、12);

//if (features [0]> 40.0)
//n = n;
i =(i + 1)% word_length;

arm_copy_f32 (start_prob、alpha_prev_F32、4);
probability = 0;

cnt1=0;
cnt2=0;
start_power = 0.1f;//bug
End_power = 0.1f;// bug
for (j = i;j < word_length;j++){
if (skip)=
0;
continue;
}
if (cnt1<4){
start_power =(float32_t);j+




(t+
);tbug+(t+

)(t+)+)(t+++)(t++)(t+)(t++)(t++)(t++ t+)(t+++)(tbug/t+(t+)(t+)(t+)(t+)(t+)(t+++(t+)(t+)(t+)(t+)(t+(tbug/t+)(tbug++ k < i;k++){
if (skip){
skip = 0;
continue;
}
if (cnt1<4){
start_power += powes[k]* powes[k];//bug
cnt1++;}
否则 if (cnt2 < 4){
end_power += power[k]* power[k];//fugs cnt+

= 1)





;t+(t+) tprob+用于前向辐射系数;// tb+(t+)

if (prob < 600.0f && start_power > 0.35f && end_power > 0.35f)
count++;
n_prev = n;
}
while (1){}


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Savo、

    这听起来像是与编译器或 C 语言代码相关的问题、因此我并不完全确定我可以提供帮助、但即使尝试、我也需要查看代码本身才能提出任何建议。

    您是否还想知道您遇到的任何错误或警告? 如何检查浮点在 main 中是否正常工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、

    我已将代码包括在内、并已将"错误"放在可疑代码所在的注释中。 没有与此相关的警告。 也没有错误。

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Savo、

    嗯... 我对浮点没有太大的经验、但每当我使用浮点时、我都将其声明为值= 3.1416;没有其他任何东西。 根据我的经验、只需包含小数点即可、至少对于 CCS 而言是如此。

    不过、我了解了'f'可以如何帮助、因为编译器在将其分配为浮点值之前应默认将其设置为双精度值、然后不使用它会导致精度降低。 但是、这似乎是特定于编译器的。

    我建议测试一些东西...
    1) 1)尝试分配0.2、0.6、1.1、1.6等值、并查看是否发生了任何舍入和/或截断
    2) 2)尝试从分配中删除"f"、并查看 Keil 是否喜欢该选项
    3) 3)尝试使用 double over float、并查看行为是否有任何变化

    老实说、这不是真正的 TM4C 主题、因此您可能会更幸运地尝试从 Keil 获得帮助、甚至在 stackoverflow 等方面获得帮助。 我很容易错过一些非常明显的东西、因为我只是缺乏有关该主题的经验...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、我已经尝试了全部3项建议、但没有成功。 无论如何都很感谢!

    是的、我甚至不知道如何表述这些问题。 毫无疑问、语法正确。 在一个.c 文件中、它可以正常工作、在另一个文件中、它不能正常工作。 奇怪的...