본문 바로가기

개발 이야기

float to byte array 시리얼 송신 테스트

728x90

 

(질문) 하기 출처의 질문이 있음

-질문: https://cafe.naver.com/carroty/372123


serial EEPROM으로 값을 넣어서 출력을 하는 프로그램까지 완료를 하였습니다.

이 과정에서 실수의 값을 넣고 출력을 하려고 하는데 형 변환을 하여도 출력이 안되고 있습니다 !

123.123 이라는 값을 eeprom의 wordaddress 에 저장을 하여 123.123이라는 값을 read 하고 싶습니다..!

값이 안들어가는 건지. 출력이 0.000 으로 되고있습니다.

==========수정 후 ==========

 

 

(답변) 하기 출처에 답변이 있음

-출처: https://blog.naver.com/smserial/222030881952

 

 형변환 float 변수를 byte Arry 로 변경하여, 시리얼 송신 합니다.

​#include "string.h" // for memcpy()

void float2Bytes (float value, u8* tb) {
   union { // 구조체
      float f;
      u8 b[4]; // 8비트 임시버퍼 입니다
   } u;
   u.f = value; // 풀롯값을 복사합니다
   memcpy (tb, u.b, 4); // 4 바이트로 나누기 합니다
}
//----------------------------------------------------
void intro () { // 매인루프 함수입니다
   u8 tb[10]; // 8비트 임시버퍼 입니다
   float f = 29.69922; // 테스트 밸류입니다

   float2Bytes (f, &tb[0]); // 함수를 호출합니다
   HAL_UART_Transmit (&huart2, &tb[0], 4, 100); // 4 바이트 송신
   ...... 

}

 

 

 

 

그럼,

    공유합니다.

 

728x90