Common Embedded C Macros
SET_BIT
#define SET_BIT(var, pos) ((var) |= (1U << (pos)))
CLEAR_BIT
#define CLEAR_BIT(var, pos) ((var) &= ~(1U << (pos)))
TOGGLE_BIT
#define TOGGLE_BIT(var, pos) ((var) ^= (1U << (pos)))
CHECK_BIT
#define CHECK_BIT(var, pos) ((var) & (1U << (pos)))
ABS
#define ABS(x) (((x) < 0) ? -(x) : (x))
MIN
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
MAX
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
CLAMP
#define CLAMP(x, min, max) (((x) < (min)) ? (min) : ((x) > (max)) ? (max) : (x))
BIT_MASK
#define BIT_MASK(width) ((1U << (width)) - 1)
BIT_FIELD
#define BIT_FIELD(var, pos, width) (((var) >> (pos)) & BIT_MASK(width))
HIGH_BYTE
#define HIGH_BYTE(var) ((uint8_t)((var) >> 8))
LOW_BYTE
#define LOW_BYTE(var) ((uint8_t)(var))
JOIN_BYTES
#define JOIN_BYTES(high, low) (((uint16_t)(high) << 8) | (low))
ARRAY_SIZE
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
ALIGN_UP
#define ALIGN_UP(x, align) (((x) + ((align) - 1)) & ~((align) - 1))
ALIGN_DOWN
#define ALIGN_DOWN(x, align) ((x) & ~((align) - 1))