📄 regctl.h
字号:
/******************************************************************************/
/* REGCTL.H - Support Library to Access Registers */
/* */
/* This file provides the header for the DSP's register support. */
/* */
/* MACRO FUNCTIONS: */
/* REG_READ - Read register at specified address */
/* REG_WRITE - Write to register at specified address */
/* RESET_BIT - Clears bit in register. */
/* GET_BIT - Returns bit value in register. */
/* SET_BIT - Sets bit in register. */
/* MASK_BIT - Create (1's) mask for specified bit. */
/* ASSIGN_BIT_VAL - Assign bit to specified value */
/* RESET_FIELD - Clears field in register */
/* GET_FIELD - Returns value of bit field in a register */
/* MASK_FIELD - Create (1's) mask for specified field */
/* LOAD_FIELD - Assigns bit field in register */
/* */
/******************************************************************************/
#ifndef __REGCTL_H_
#define __REGCTL_H_
/*----------------------------------------------------------------------------*/
/* General purpose Bits Definitions */
/*----------------------------------------------------------------------------*/
typedef enum BitsE
{
BIT0 = 0,
BIT1,
BIT2,
BIT3,
BIT4,
BIT5,
BIT6,
BIT7,
BIT8,
BIT9,
BIT10,
BIT11,
BIT12,
BIT13,
BIT14,
BIT15,
BIT16,
BIT17,
BIT18,
BIT19,
BIT20,
BIT21,
BIT22,
BIT23,
BIT24,
BIT25,
BIT26,
BIT27,
BIT28,
BIT29,
BIT30,
BIT31 = 31
} BitsT ; // end enum XsGpioIdE
/*----------------------------------------------------------------------------*/
/* MACRO FUNCTIONS */
/*----------------------------------------------------------------------------*/
#define CONTENTS_OF(addr) \
(*((volatile unsigned int *)(addr)))
#define LENGTH_TO_BITS(length) \
(~(0xffffffff << (length)))
/* MACROS to SET, CLEAR and RETURN bits and bitfields in Memory Mapped */
/* locations using the address of the specified register. */
#define REG_READ(addr) \
(CONTENTS_OF(addr))
#define REG_WRITE(addr,val) \
(CONTENTS_OF(addr) = (val))
#define MASK_BIT(bit) \
(1 << (bit))
#define RESET_BIT(addr,bit) \
(CONTENTS_OF(addr) &= (~MASK_BIT(bit)))
#define GET_BIT(addr,bit) \
((CONTENTS_OF(addr) & MASK_BIT(bit)) ? 1 : 0)
#define SET_BIT(addr,bit) \
(CONTENTS_OF(addr) = (CONTENTS_OF(addr)) | (MASK_BIT(bit)))
#define ASSIGN_BIT_VAL(addr,bit,val) \
( (val) ? SET_BIT(addr,bit) : RESET_BIT(addr,bit) )
#define MASK_FIELD(bit,length) \
(LENGTH_TO_BITS(length) << (bit))
#define RESET_FIELD(addr,bit,length) \
( CONTENTS_OF(addr) &= (~MASK_FIELD(bit,length)))
#define GET_FIELD(addr,bit,length) \
((CONTENTS_OF(addr) & MASK_FIELD(bit,length)) >> bit)
#define LOAD_FIELD(addr,val,bit,length) \
(CONTENTS_OF(addr) = (CONTENTS_OF(addr) & (~MASK_FIELD(bit,length))) | (val<<bit))
#endif /* #ifndef __REGCTL_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -