您好!
我的问题是类型转换。 使用 CMSIS 的"ARM_Q15_TO_FLOAT"函数或仅使用普通"my_float =(float) my_Int16"、需要13ms 将256个值从 Int16_t 转换为 float、运行频率为80MHz。 这是怎么做的? 奇怪的是、它需要这么长的时间。 不应大致为: 256 *(1个负载+ 1个存储)/ 80、000、000 = 6.4us? <<<忽略此问题
我正在使用 Tiva C LaunchPad。 欢迎提出任何建议。
编辑:这是转换代码的反汇编窗口。 cut_frame 的类型为 float32_t、而 ADC_OUT_0的类型为 int16_t
汇编代码位于 C 代码下方。
100: 对于(j = 0;j < 256;j++) 0x00002848 2400 MOV R4、#0x00 0x0000284A E00D B 0x00002868 101: s减半_FRAME[j]= ADC_OUT_0[j]; 102: //arm_Q15_TO_float (adc_out_0、cute_frame、256); 103:} 104: 否则为{ 0x0000284C 485B LDR R0、[PC、#364];@0x000029BC 0x0000284E F9300014 LDRSH R0、[r0、R4、LSL #1] 0x00002852 EE000A10 VMOV S0、r0 0x00002856 EEB80AC0 VCVT.F32.S32 s0、s0 0x0000285A F50D6000加载项 R0、SP、#0x800 0x0000285E EB000084 ADD R0、r0、R4、LSL #2 0x00002862 ED800A00 VSTR S0、[r0、#0x00] 0x00002866 1C64 添加了 R4、R4、#1 0x00002868 2CFF CMP R4、#0xFF 0x0000286A D9EF BLS 0x0000284C 0x0000286C E011 B 0x00002892