필자는 TI MSP430 마이크로 컨트롤러의 FRAM 레지스터에 일부 플로트 데이터를 저장하고 몇 가지 prolems를 갖고 싶습니다.uint32_t 포인터에 플로트 값 저장
나는 이것을 어떻게 할 수 있는지 모른다.
정상적인 정수 변수는 아무런 문제가되지 않습니다.
일반 정수 변수 :이
void main()
{
uint32_t value = 25;
uint32_t framPtr = 0xD000;
FRAMC_write_uint32_t(value, (uint32_t*)framPtr);
}
void FRAMC_write_uint32_t(uint32_t value,
uint32_t *framPtr)
{
*framPtr = value;
}
그러나 부동 소수점 값이 작동하지 않습니다. 함수 내부의 값을 float으로 변경하려고 시도했지만 결과가 없습니다. (
void FRAM_write_float(float value,
uint32_t *framPtr)
{
*framPtr++ = (float)value;
}
그것은 데이터를 1.40129846e-45 (DEN)를 저장 : 그것은 작동하지 않습니다
float value = 1.25;
uint32_t framPtr = 0xD000;
이 기능 :
이 내 부동 소수점 데이터입니다 HEX : 0x00000001) 내 메모리 뱅크에.
누군가 내 문제를 도와 줄 수 있기를 바랍니다. 고마워요!
부동 소수점을 정수로 변환해도 비트가 재 해석되지 않습니다. 가치 전환을합니다. – StoryTeller
나는 추측하고있다. 실제로 플로트를 변환하려고 시도한 방법을 보여주지 않았기 때문입니다. 왜 나를 넘어서는 코드가 아닌 * 작동하는 코드를 보여주고 있습니까? – StoryTeller
그 차이점은 무엇입니까? 나는 문제를 이해하지 못한다 ... 메모리 뱅크를 조사 할 때, 저장된 값은 1.40129846e-45 (DEN) (HEX : 0x00000001) – Pana