📄 regs.h
字号:
/******************************************************************************/
/* REGS.H - TMS320C54x Peripheral Support Library CPU Register Support */
/* */
/* 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 */
/* GET_REG - Returns value of non memory mapped register */
/* SET_REG - Sets value of a non memory mapped register */
/* GET_REG_BIT - Return bit value in non memory mapped register */
/* SET_REG_BIT - Sets bit in non memory mapped register */
/* RESET_REG_BIT - Resets given bit in non memory mapped register */
/* GET_REG_FIELD - Return value of specified register field */
/* LOAD_REG_FIELD - Set value of specified register fiedl */
/* */
/* 1998 Oct 26 - Sub-set for use with C5410 */
/******************************************************************************/
#ifndef _REGS_H_
#define _REGS_H_
/*----------------------------------------------------------------------------*/
/* 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))
/* MACROS to SET, CLEAR and RETURN bits and bitfields in Memory Mapped */
/* and Non-Memory Mapped using register names. */
#define GET_REG(reg) \
(reg)
#define SET_REG(reg,val) \
((reg)= (val))
#define GET_REG_BIT(reg,bit) \
((reg) & MASK_BIT(bit) ? 1 : 0)
#define SET_REG_BIT(reg,bit) \
((reg) |= MASK_BIT(bit))
#define RESET_REG_BIT(reg,bit) \
((reg) &= (~MASK_BIT(bit)))
#define GET_REG_FIELD(reg,bit,length) \
((reg & MASK_FIELD(bit,length)) >> bit)
#define LOAD_REG_FIELD(reg,val,bit,length) \
(reg &= (~MASK_FIELD(bit,length)) | (val<<bit))
#define FIELD_VAL(bit,length,val) (MASK_FIELD(bit,length) & (val<<bit))
#define BIT_VAL(bit,val) ((0x1&val)<<bit)
#endif /* ifndef _REGS_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -