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.
我使用的是 TI ARM clang v2.1.LTS。
以下代码是根据 SDK 8.4.0.17示例代码修改的。
在 IdleLoop ()中,当我使用 UINT32指针"pTestResult"指向数组中奇数位置的地址,然后将 UINT32指针的值分配给全局 float32变量时,程序崩溃。
#include <stdlib.h> #include "ti_drivers_config.h" #include "ti_board_config.h" void empty_main(void *args); void IdleLoop( void ); Uint16 TestData[8] = {0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007}; Uint32 *pTestResult; Uint32 PointerAddr; Float32 TestResultFloat = 0.0f; int main() { System_init(); Board_init(); for(;;) { IdleLoop(); } empty_main(NULL); Board_deinit(); System_deinit(); return 0; } void IdleLoop( void ) { void *pTest; pTest = (void *)&TestData[3]; pTestResult = (Uint32 *)pTest; PointerAddr = pTestResult; TestResultFloat = *pTestResult; }
将 UINT32指针的值分配给全局 float32变量时有什么问题?
谢谢
您好
我不确定您尝试实现的代码的目的是什么。
但是、浮点的位表示与整数大不相同、通常将一个整数格式设置为另一个整数会导致一些不正确的行为:
一般谷歌搜索导致使用 memcpy 一个更好的方式来处理这:
https://stackoverflow.com/questions/41661029/store-float-value-in-uint32-t-pointer
https://www.appsloveworld.com/c/100/78/store-float-value-in-uint32-t-pointer
此致
皮亚利