191 lines
4.2 KiB
C
Executable File
191 lines
4.2 KiB
C
Executable File
/**
|
|
I/O Access header file
|
|
|
|
I/O Access header file
|
|
|
|
@file IOReg.h
|
|
@ingroup mISYSUtil
|
|
@note Nothing
|
|
*/
|
|
|
|
#ifndef __IO_REG_H
|
|
#define __IO_REG_H
|
|
|
|
#include "constant.h"
|
|
#include "CMacro.h"
|
|
#include "Memory.h"
|
|
|
|
/**
|
|
@addtogroup mISYSUtil
|
|
*/
|
|
//@{
|
|
|
|
/**
|
|
@name Input 8bit IO register
|
|
|
|
Input 8bit IO register
|
|
|
|
@param[in] x I/O address
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define INREG8(x) (*((volatile UINT8*)(x))) ///< Read 8bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Output 8bit IO register
|
|
|
|
Output to 8bit IO register
|
|
|
|
@param[in] x I/O address
|
|
@param[in] y Value to be output
|
|
|
|
@return void
|
|
*/
|
|
//@{
|
|
#define OUTREG8(x, y) (*((volatile UINT8*)(x)) = (y)) ///< Write 8bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Set bits to 8bit IO register
|
|
|
|
Set bits to 8bit IO register
|
|
|
|
@param[in] x I/O address
|
|
@param[in] y Value to be set. y will be ORed to this address
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define SETREG8(x, y) OUTREG8((x), INREG8(x) | (y)) ///< Set 8bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Clear bits from 8bit IO register
|
|
|
|
Clear bits from 8bit IO register
|
|
|
|
@param[in] x I/O address
|
|
@param[in] y Value to be clear. ~(y) will be ANDed to this address
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define CLRREG8(x, y) OUTREG8((x), INREG8(x) & ~(y)) ///< Clear 8bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Input 16bit IO register
|
|
|
|
Input 16bit IO register
|
|
|
|
@param[in] x I/O address (should be 2 bytes alignment)
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define INREG16(x) (*((volatile UINT16*)(x))) ///< Read 16bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Output 16bit IO register
|
|
|
|
Output to 16bit IO register
|
|
|
|
@param[in] x I/O address (should be 2 bytes alignment)
|
|
@param[in] y Value to be output
|
|
|
|
@return void
|
|
*/
|
|
//@{
|
|
#define OUTREG16(x, y) (*((volatile UINT16*)(x)) = (y)) ///< Write 16bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Set bits to 16bit IO register
|
|
|
|
Set bits to 16bit IO register
|
|
|
|
@param[in] x I/O address (should be 2 bytes alignment)
|
|
@param[in] y Value to be set. y will be ORed to this address
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define SETREG16(x, y) OUTREG16((x), INREG16(x) | (y)) ///< Set 16bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Clear bits from 16bit IO register
|
|
|
|
Clear bits from 16bit IO register
|
|
|
|
@param[in] x I/O address (should be 2 bytes alignment)
|
|
@param[in] y Value to be clear. ~(y) will be ANDed to this address
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define CLRREG16(x, y) OUTREG16((x), INREG16(x) & ~(y)) ///< Clear 16bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Input 32bit IO register
|
|
|
|
Input 32bit IO register
|
|
|
|
@param[in] x I/O address (should be 4 bytes alignment)
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define INREG32(x) (*((volatile UINT32*)(x))) ///< Read 32bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Output 32bit IO register
|
|
|
|
Output to 32bit IO register
|
|
|
|
@param[in] x I/O address (should be 4 bytes alignment)
|
|
@param[in] y Value to be output
|
|
|
|
@return void
|
|
*/
|
|
//@{
|
|
#define OUTREG32(x, y) (*((volatile UINT32*)(x)) = (y)) ///< Write 32bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Set bits to 32bit IO register
|
|
|
|
Set bits to 32bit IO register
|
|
|
|
@param[in] x I/O address (should be 4 bytes alignment)
|
|
@param[in] y Value to be set. y will be ORed to this address
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define SETREG32(x, y) OUTREG32((x), INREG32(x) | (y)) ///< Set 32bits IO register
|
|
//@}
|
|
|
|
/**
|
|
@name Clear bits from 32bit IO register
|
|
|
|
Clear bits from 32bit IO register
|
|
|
|
@param[in] x I/O address (should be 4 bytes alignment)
|
|
@param[in] y Value to be clear. ~(y) will be ANDed to this address
|
|
|
|
@return register value
|
|
*/
|
|
//@{
|
|
#define CLRREG32(x, y) OUTREG32((x), INREG32(x) & ~(y)) ///< Clear 32bits IO register
|
|
//@}
|
|
|
|
//@}
|
|
|
|
#endif // __IO_REG_H
|