Car/my_lib/my_lib.h
2025-04-18 16:22:24 +08:00

111 lines
2.4 KiB
C

#ifndef __MY_LIB_H__
#define __MY_LIB_H__
#include "sys.h"
#ifdef __MY_LIB_C__
#define GLOBAL
#else
#define GLOBAL extern
#endif
GLOBAL uint8_t MLib_GetSum(uint8_t *p,uint32_t l);
GLOBAL uint16_t MLib_GetShortSum(uint16_t *p,uint32_t dot);
GLOBAL uint8_t MLib_FindFastBit(uint32_t d);
GLOBAL void MLib_Gpio_Bits_Write(GPIO_TypeDef* GPIOx,uint16_t bits,uint16_t data);
#ifndef BIT_SUM
#define BIT_SUM
#define B0 1
#define B1 2
#define B2 4
#define B3 8
#define B4 16
#define B5 32
#define B6 64
#define B7 128
#define B8 256
#define B9 512
#define B10 1024
#define B11 2048
#define B12 4096
#define B13 8192
#define B14 16384
#define B15 32768
#define B16 65536
#define B17 131072
#define B18 262144
#define B19 524288
#define B20 1048576
#define B21 2097152
#define B22 4194304
#define B23 8388608
#define B24 16777216
#define B25 33554432
#define B26 67108864
#define B27 134217728
#define B28 268435456
#define B29 536870912
#define B30 1073741824
#define B31 2147483648u
#endif
#ifdef __MY_LIB_C__
const uint32_t bit_tab[]={
B0 ,B1 ,B2 ,B3 ,B4 ,B5 ,B6 ,B7 ,
B8 ,B9 ,B10,B11,B12,B13,B14,B15,
B16,B17,B18,B19,B20,B21,B22,B23,
B24,B25,B26,B27,B28,B29,B30,B31
};
#define ANDB(d) (~(uint32_t)d)
const uint32_t bit_and_tab[]={
ANDB(B0) ,ANDB(B1) ,ANDB(B2) ,ANDB(B3) ,
ANDB(B4) ,ANDB(B5) ,ANDB(B6) ,ANDB(B7) ,
ANDB(B8) ,ANDB(B9) ,ANDB(B10),ANDB(B11),
ANDB(B12),ANDB(B13),ANDB(B14),ANDB(B15),
ANDB(B16),ANDB(B16),ANDB(B18),ANDB(B19),
ANDB(B20),ANDB(B21),ANDB(B22),ANDB(B23),
ANDB(B24),ANDB(B25),ANDB(B26),ANDB(B27),
ANDB(B28),ANDB(B29),ANDB(B30),ANDB(B31)
};
#else
extern const uint32_t bit_tab[32];
extern const uint32_t bit_and_tab[32];
#endif
#define OBIT(b) ((0x00000001)<<(b))
#ifdef __MY_LIB_C__
const uint8_t bit4_lowhig[16] = {
0x00,0x08,0x04,0x0c,0x02,0x0a,0x06,0x0e,
0x01,0x09,0x05,0x0d,0x03,0x0b,0x07,0x0f
};
#else
extern const uint8_t bit4_lowhig[16];
#endif
GLOBAL uint32_t U8ToU32(uint8_t *datas);
GLOBAL void U32ToU8(uint8_t *Buf,uint32_t Datas);
GLOBAL uint16_t U8ToU16(uint8_t *datas);
GLOBAL void U16ToU8(uint8_t *Buf,uint16_t Datas);
GLOBAL uint16_t U8ToU16_Big(uint8_t *datas);
GLOBAL uint32_t MLib_GetDataSub(uint32_t d1,uint32_t d2);
GLOBAL void MLib_memcpy(void *d,void *s,uint32_t lb);
GLOBAL void MLib_memset(void *b,uint8_t d,uint32_t lb);
GLOBAL void MLib_memint(void *b,uint8_t d,uint32_t lb);
GLOBAL int8_t MLib_memcmp(void *b1,void *b2,uint32_t lb);
#undef GLOBAL
#endif //__MY_LIB_H__