42 lines
986 B
C
42 lines
986 B
C
#ifndef _USER_LIB_H_
|
|
#define _USER_LIB_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
typedef union
|
|
{
|
|
float f;
|
|
int32_t c;
|
|
} float32_u; // 浮点数共用体
|
|
|
|
// uint32小端转大端
|
|
#define S2B_UINT32(a) \
|
|
(((uint32_t)(a) & 0xFF000000) >> 24) + (((uint32_t)(a) & 0x00FF0000) >> 8) + (((uint32_t)(a) & 0x0000FF00) << 8) + (((uint32_t)(a) & 0x000000FF) << 24)
|
|
|
|
// uint32大端转小端
|
|
#define B2S_UINT32(a) S2B_UINT32(a)
|
|
|
|
// uint16小端转大端
|
|
#define S2B_UINT16(a) ((((uint16_t)(a) & 0xFF00) >> 8) + (((uint16_t)(a) & 0x00FF) << 8))
|
|
|
|
// uint16大端转小端
|
|
#define B2S_UINT16(a) S2B_UINT16(a)
|
|
|
|
#define BUILD_UINT16(loByte, hiByte) \
|
|
((uint16_t)(((loByte) & 0x00FF) + (((hiByte) & 0x00FF) << 8)))
|
|
|
|
// float32小端转大端
|
|
static inline float S2B_FLOAT32(float fv)
|
|
{
|
|
float32_u _f;
|
|
_f.f = fv;
|
|
_f.c = S2B_UINT32(_f.c);
|
|
return _f.f;
|
|
}
|
|
|
|
// float32大端转小端
|
|
#define B2S_FLOAT32(a) S2B_FLOAT32(a)
|
|
|
|
uint8_t xor_compute(const uint8_t *const data, uint16_t length);
|
|
#endif
|