⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytype.h

📁 BHS-STM32-NRF24L01无线
💻 H
字号:
#if !defined( _MYTYPE_H )
#define _MYTYPE_H


//常用变量类型定义
typedef unsigned char   tByte;
typedef unsigned int    tWord;



typedef unsigned char   uchar;
typedef unsigned int    uint;//int有的CPU是32位
typedef unsigned long   ulong;

#ifndef   BOOL
 //typedef unsigned char 	BOOL;
#endif

#define	int8            signed char
#define	int16           signed short
#define	int32           signed long
#define	uint8           unsigned char
#define	uint16          unsigned short
#define	uint32          unsigned long


typedef unsigned char BOOLEAN;
typedef unsigned char INT8U;      /* Unsigned  8 bit quantity         */
typedef signed   char INT8S;      /* Signed    8 bit quantity         */
typedef unsigned short INT16U;    /* Unsigned 16 bit quantity         */
typedef signed   short INT16S;    /* Signed   16 bit quantity         */
typedef unsigned long INT32U;       /* Unsigned 32 bit quantity       */
typedef signed   long INT32S;       /* Signed   32 bit quantity       */
typedef float FP32;       /* Single precision floating point    */
typedef double FP64;      /* Double precision floating point      */

#define BYTE       INT8S         /* Define data types for backward compatibility ...   */
#define UBYTE      INT8U       /* ... to uC/OS V1.xx.  Not actually needed for ...   */
#define WORD       INT16S      /* ... uC/OS-II.            */
#define UWORD      INT16U
#define LONG       INT32S
#define ULONG      INT32U

typedef void (*pFUN)(void);
typedef void (*pFUNpar)(uint8);
typedef void (*pFUNparU8)(uint8);
typedef void (*pFUNparU16)(uint16);

typedef uint8 (*pU8FUN)(void);

typedef unsigned char OS_STK;       /* Each stack entry is 8-bit wide      */
//typedef INT16U             OS_FLAGS;   /* Date type for event flag bits (8, 16 or 32 bits)             */



#define SetBit(Value,Bit)  ( Value |= (0x01<<Bit) )     //Bit(0~7)//一定要用()
#define ClrBit(Value,Bit)  ( Value &= (~(0x01<<Bit)) )

#define SetBit32(Value,Bit)  ( Value |= (1UL<<Bit) )     //Bit(0~31)//一定要用()
#define ClrBit32(Value,Bit)  ( Value &= (~(1UL<<Bit)) )


#define BIT(n)             ( (uint8)((uint8)1<<n) )    //n(0~7)
#define BIT8(n)            ( (uint8)((uint8)1<<n) )    //n(0~7)
#define BIT16(n)           (  (uint16)((uint16)1<<n) )   //n(0~31)
#define BIT32(n)           (  (uint32)((uint32)1UL<<n) )   //n(0~31) 


//测试某位是否为1,为1返回1,为0返回为0
#define	isBit(dat, n)    ((dat&BIT8(n)) ? 1: 0)//0~7
#define isBit8(dat, n)   ((dat&BIT8(n)) ? 1: 0)//0~7

//测试某位是否为1,为1返回1,为0返回为0
#define	isBit16(dat, n)  ((dat&BIT16(n)) ? 1: 0)//0~15

#define	isBit32(dat, n)  ((dat&BIT32(n)) ? 1: 0)//0~31

//从16位数据拷贝到8位数据,高字节在前
#define cpyU8fU16(U8dat, U16dat)     \
{                                    \
   *((uint8 *)(U8dat+0))=U16dat>>8;  \
   *((uint8 *)(U8dat+1))=U16dat;     \
}

//从32位数据拷贝到8位数据,高字节在前
#define cpyU8fU32(U8dat, U32dat)     \
{                                    \
   *((uint8 *)U8dat)=(uint8)(U32dat>>24);     \
   *((uint8 *)(U8dat+1))=(uint8)(U32dat>>16); \
   *((uint8 *)(U8dat+2))=(uint8)(U32dat>>8);  \
   *((uint8 *)(U8dat+3))=(uint8)U32dat;     \
}

//从8位数据拷贝到16位数据,高字节在前
#define cpyU16fU8(U16dat, U8dat)     \
{                                    \
   U16dat = *((uint8 *)U8dat);       \
   U16dat <<= 8;                     \
   U16dat += *((uint8 *)(U8dat+1));  \
}

//从8位数据拷贝到32位数据,高字节在前
#define cpyU32fU8(U32dat, U8dat)     \
{                                    \
   U32dat = *((uint8 *)U8dat);       \
   U32dat <<= 8;                     \
   U32dat += *((uint8 *)(U8dat+1));  \
   U32dat <<= 8;                     \
   U32dat += *((uint8 *)(U8dat+2));  \
   U32dat <<= 8;                     \
   U32dat += *((uint8 *)(U8dat+3));  \
}


//  Intel && AMD
#define  LITTLE_ENDIAN 1

 // 字节序
#if defined(BIG_ENDIAN) && !defined(LITTLE_ENDIAN)

   #define htons(A)   (A)
   #define htonl(A)   (A)
   #define ntohs(A)   (A)
   #define ntohl(A)   (A)

#elif defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN)

   #define htons(A)    ((((uint16)(A) & 0xff00) >> 8) | \
                        (((uint16)(A) & 0x00ff) << 8))
   #define htonl(A)    ((((uint32)(A) & 0xff000000) >> 24) | \
                        (((uint32)(A) & 0x00ff0000) >> 8) | \
                        (((uint32)(A) & 0x0000ff00) << 8) | \
                        (((uint32)(A) & 0x000000ff) << 24))
   #define ntohs htons
   #define ntohl htonl

#else

   #error "Either BIG_ENDIAN or LITTLE_ENDIAN must be #defined, but not both."
   
   int checkCPUendian()  //检查处理器是big-endian还是little-endian
   {
      union 
      {
      	unsigned int a;
       unsigned char b;            
      }c;
      c.a = 1;
      return (c.b == 1);       
   }  /*return 1 : little-endian, return 0:big-endian*/
#endif


//定义一些短延时(空操作)

//#define NOP()               __asm { nop }
//
//#define DelayNop1()         {NOP();}
//#define DelayNop2()         {DelayNop1(); NOP();}
//#define DelayNop3()         {DelayNop2(); NOP();}
//#define DelayNop4()         {DelayNop3(); NOP();}
//#define DelayNop5()         {DelayNop4(); NOP();}
//#define DelayNop6()         {DelayNop5(); NOP();}
//#define DelayNop7()         {DelayNop6(); NOP();}
//#define DelayNop8()         {DelayNop7(); NOP();}
//#define DelayNop9()         {DelayNop8(); NOP();}
//
//#define DelayNop(N)         DelayNop##N()


#define __NOP1__  __asm { nop }
#define __NOP2__ __NOP1__ __NOP1__
#define __NOP4__ __NOP2__ __NOP2__
#define __NOP8__ __NOP4__ __NOP4__
#define __NOP16__ __NOP8__ __NOP8__
#define __NOP32__ __NOP16__ __NOP16__
#define __NOP64__ __NOP32__ __NOP32__
#define __NOP128__ __NOP64__ __NOP64__


#define DelayNop(a)             \
    if ((a)&(0x01))    {__NOP1__}                    \
    if ((a)&(0x02))    {__NOP2__}                    \
    if ((a)&(0x04))    {__NOP4__}                    \
    if ((a)&(0x08))    {__NOP8__}                    \
    if ((a)&(0x10))    {__NOP16__}                    \
    if ((a)&(0x20))    {__NOP32__}                    \
    if ((a)&(0x40))    {__NOP64__}                    \
    if ((a)&(0x80))    {__NOP128__}                    

//定义通用消息结果
typedef  struct
{
   uint8  result_flag;  //是否需要返回结果,0=不需要,1=需要
   uint8  result;       //返回结果
   OS_TID tid;          //需要得到结果的任务ID号
   uint8  type;     //消息类型
   
}stru_ComMsg;


#include "BinType.h"




#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -