原创 [函数库][AVR]系统常用宏定义

2007-11-23 15:33 4118 3 3 分类: MCU/ 嵌入式

RD_MacroAndConst.h


--------------------------------------------------------------------------------------


#ifndef _USE_MACRO_AND_CONST_H_
#define _USE_MACRO_AND_CONST_H_
/***********************************************************
*   声明库说明:系统常用宏定义声明库                       *
*   版本:      v0.11                                      *
*   作者:      傻孩子                                     *
*   创建日期:  2006年5月4日                               *
* -------------------------------------------------------- *
*  [支 持 库]                                              *
*   支持库名称:                                           *
*   需要版本:                                             *
*   支持库说明:                                           *
* -------------------------------------------------------- *
*  [版本更新]                                              *
*   修改:      王卓然                                     *
*   修改日期:  2007年1月31日                              *
*   版本:      v0.05                                      *
*                                                          *
*   修改:      王卓然                                     *
*   修改日期:  2007年2月20日                              *
*   版本:      v0.06                                      *
*                                                          *
*   修改:      王卓然                                     *
*   修改日期:  2007年2月27日                              *
*   版本:      v0.07                                      *
*                                                          *
*   修改:      王卓然                                     *
*   修改日期:  2007年5月14日                              *
*   版本:      v0.09                                      *
*                                                          *
*   修改:      王卓然                                     *
*   修改日期:  2007年8月15日                              *
*   版本:      v0.11                                      *
* -------------------------------------------------------- *
*  [版本历史]                                              *
*       v0.04  修改了NULL的定义,增加了MAX()和MIN两个宏;  *
*              修改了关于char的符号定义。                  *
*       v0.05  针对新规范进行了宏的扩充,删除了一些无效的  *
*              非规范的宏定义和类型声明。                  *
*       v0.06  增加了对新的位操作方式的支持。              *
*       v0.07  增加了一个SAFE_CODE_PERFORMANCE()宏,用来保 *
*              正原子操作的正确运行。                      *
*       v0.09  增加了一个强制类型转换宏TYPE_CONVERSION(), *
*              和一个绝对值宏ABS()                         *
*       v0.11  增加了一个用于从任意整数中提取16进制数字的  *
*              宏SELECT_HEX()。和一个将任意整数进行等效的  *
*              正数求模。也就是说,即便是负数,也会映射到  *
*              等效的正数上。                              *
* -------------------------------------------------------- *
*  [使用说明]                                              *
*           1、该库文件属于基础库文件。                    *
***********************************************************/


/********************
*   系 统 宏 定 义  *
********************/
#ifndef _USE_NON_ICC_IDE
    # include
#endif


/*------------------*
*   常 数 宏 定 义  *
*------------------*/
#ifndef TRUE
    # define TRUE    0x01
#endif
#ifndef FALSE
    # define FALSE   0x00
#endif
#ifndef HIGH
    # define HIGH    0x01
#endif
#ifndef LOW
    # define LOW     0x00
#endif
#ifndef PI
    # define PI      3.1415926535897932f
#endif
# define K_D2R   (PI/180.0)
# define K_R2D   (180.0/PI)          


/*------------------*
*   动 作 宏 定 义  *
*------------------*/
# define SIN(x)  sin((float)x * K_D2R)
# define COS(x)  cos((float)x * K_D2R)
# define TAN(x)  tan((float)x * K_D2R)
# define ATAN(x) (K_R2D*atan(x))
# define ASIN(x) (K_R2D*asin(x))
# define ACOS(x) (K_R2D*acos(x))


#ifndef NULL
    # define NULL    0
#endif


# define SET(Reg,n)    Reg |= BIT(n);
# define CLR(Reg,n)    Reg &= ~BIT(n);


#define MAX(a,b)  (((a) > (b)) ? (a) : (b))
#define MIN(a,b)  (((a) < (b)) ? (a) : (b))


#define UBOUND(a) (sizeof(a)/sizeof(a[0]))


# define SAFE_CODE_PERFORMANCE(Code)     CLI();Code;SEI();


# define TYPE_CONVERSION(Addr,Type)     (*((Type *)(Addr)))


# define ABS(Number)    (((Number) < 0)?(-(Number))Number))


# define SELECT_HEX(Value,n,Type)       ((Value << (n) * 4) >> ((sizeof(Type) * 8) - 4))


# define ABS_MOD(x,y)                   (((x) < 0) ? ((((x) % (y)) + (y)) % (y))(x) % (y)))



/********************
*  用户变量类型定义 *
********************/
typedef unsigned int uint16;
typedef unsigned int UINT;
typedef unsigned int uint;
typedef unsigned int UINT16;
typedef unsigned int WORD;
typedef unsigned int word;
typedef int          int16;
typedef int          INT16;


typedef unsigned long uint32;
typedef unsigned long UINT32;
typedef unsigned long DWORD;
typedef unsigned long dword;
typedef long          int32;
typedef long          INT32;


typedef signed   char int8;
typedef signed   char INT8;
typedef unsigned char byte;
typedef unsigned char BYTE;
typedef unsigned char UINT8;
typedef unsigned char uint8;
typedef unsigned char BOOL;


#endif

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条