40 lines
1.2 KiB
C
40 lines
1.2 KiB
C
|
/**************************************************************************//**
|
||
|
*
|
||
|
* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved.
|
||
|
*
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
*
|
||
|
* Change Logs:
|
||
|
* Date Author Notes
|
||
|
* 2020-2-7 Wayne First version
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
#ifndef NU_MISC_UTIL_H
|
||
|
#define NU_MISC_UTIL_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#define NU_MAX(a,b) ((a)>(b)?(a):(b))
|
||
|
#define NU_MIN(a,b) ((a)<(b)?(a):(b))
|
||
|
#define NU_CLAMP(x, min, max) NU_MIN(NU_MAX((x), (min)), (max))
|
||
|
#define NU_ALIGN_DOWN(X, ALIGN) ((X) & ~((ALIGN) - 1))
|
||
|
#define NU_ALIGN_UP(X, ALIGN) (((X) + (ALIGN) - 1) & ~((ALIGN) - 1))
|
||
|
#define NU_ISALIGNED(a, b) (((a) & (b - 1)) == 0)
|
||
|
|
||
|
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
|
||
|
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
|
||
|
#define READ_BIT(REG, BIT) ((REG) & (BIT))
|
||
|
#define CLEAR_REG(REG) ((REG) = (0x0))
|
||
|
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
|
||
|
#define READ_REG(REG) ((REG))
|
||
|
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|