|
WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
|
#include <stdint.h>
宏定义 | |
| #define | NULL 0L |
| #define | array_size(x) (sizeof(x) / sizeof((x)[0])) |
| #define | min(x, y) (((x) < (y)) ? (x) : (y)) |
| #define | max(x, y) (((x) > (y)) ? (x) : (y)) |
| #define | likely(x) (x) |
| #define | unlikely(x) (x) |
| #define | unused(var) (void)(var) |
| #define | STATIC static |
| #define | INLINE inline |
| #define | bit(x) (1UL << (uint32_t)(x)) |
| #define | makeu16(a, b) ((uint16_t)(((uint8_t)(a)) | ((uint16_t)((uint8_t)(b))) << 8)) |
| #define | makeu32(a, b) ((uint32_t)(((uint16_t)(a)) | ((uint32_t)((uint16_t)(b))) << 16)) |
| #define | makeu64(a, b) ((uint64_t)(((uint32_t)(a)) | ((uint64_t)((uint32_t)(b))) << 32)) |
| #define | joinu32(a, b, c, d) makeu32(makeu16((a), (b)), makeu16((c), (d))) |
| #define | hiu32(x) ((uint32_t)(((uint64_t)(x) >> 32) & 0xFFFFFFFF)) |
| #define | lou32(x) ((uint32_t)(x)) |
| #define | hiu16(x) ((uint16_t)(((uint32_t)(x) >> 16) & 0xFFFF)) |
| #define | lou16(x) ((uint16_t)(x)) |
| #define | hiu8(x) ((uint8_t)(((uint16_t)(x) >> 8) & 0xFF)) |
| #define | lou8(x) ((uint8_t)(x)) |
| #define | uapi_max(a, b) (((a) > (b)) ? (a) : (b)) |
| #define | uapi_min(a, b) (((a) < (b)) ? (a) : (b)) |
| #define | uapi_reg_write(addr, val) (*(volatile unsigned int *)(uintptr_t)(addr) = (val)) |
| #define | uapi_reg_read(addr, val) ((val) = *(volatile unsigned int *)(uintptr_t)(addr)) |
| #define | uapi_reg_write32(addr, val) (*(volatile unsigned int *)(uintptr_t)(addr) = (val)) |
| #define | uapi_reg_read32(addr, val) ((val) = *(volatile unsigned int *)(uintptr_t)(addr)) |
| #define | uapi_reg_read_val32(addr) (*(volatile unsigned int*)(uintptr_t)(addr)) |
| #define | uapi_reg_setbitmsk(addr, msk) ((uapi_reg_read_val32(addr)) |= (msk)) |
| #define | uapi_reg_clrbitmsk(addr, msk) ((uapi_reg_read_val32(addr)) &= ~(msk)) |
| #define | uapi_reg_clrbit(addr, pos) ((uapi_reg_read_val32(addr)) &= ~((unsigned int)(1) << (pos))) |
| #define | uapi_reg_setbit(addr, pos) ((uapi_reg_read_val32(addr)) |= ((unsigned int)(1) << (pos))) |
| #define | uapi_reg_clrbits(addr, pos, bits) (uapi_reg_read_val32(addr) &= ~((((unsigned int)1 << (bits)) - 1) << (pos))) |
| #define | uapi_reg_setbits(addr, pos, bits, val) |
| #define | uapi_reg_getbits(addr, pos, bits) ((uapi_reg_read_val32(addr) >> (pos)) & (((unsigned int)1 << (bits)) - 1)) |
| #define | uapi_reg_write16(addr, val) (*(volatile unsigned short *)(uintptr_t)(addr) = (val)) |
| #define | uapi_reg_read16(addr, val) ((val) = *(volatile unsigned short *)(uintptr_t)(addr)) |
| #define | uapi_reg_read_val16(addr) (*(volatile unsigned short*)(uintptr_t)(addr)) |
| #define | uapi_reg_clrbit16(addr, pos) ((uapi_reg_read_val16(addr)) &= ~((unsigned short)(1) << (pos))) |
| #define | uapi_reg_setbit16(addr, pos) ((uapi_reg_read_val16(addr)) |= ((unsigned short)(1) << (pos))) |
| #define | uapi_reg_clrbits16(addr, pos, bits) |
| #define | uapi_reg_setbits16(addr, pos, bits, val) |
| #define | uapi_reg_getbits16(addr, pos, bits) ((uapi_reg_read_val16(addr) >> (pos)) & (((unsigned short)1 << (bits)) - 1)) |
| #define | uapi_reg_write8(addr, val) (*(volatile unsigned char *)(uintptr_t)(addr) = (val)) |
| #define | uapi_reg_read8(addr, val) ((val) = *(volatile unsigned char *)(uintptr_t)(addr)) |
| #define | uapi_reg_read_val8(addr) (*(volatile unsigned char*)(uintptr_t)(addr)) |
| #define | uapi_reg_clrbit8(addr, pos) ((uapi_reg_read_val8(addr)) &= ~((unsigned char)(1) << (pos))) |
| #define | uapi_reg_setbit8(addr, pos) ((uapi_reg_read_val8(addr)) |= ((unsigned char)(1) << (pos))) |
| #define | uapi_reg_clrbits8(addr, pos, bits) (uapi_reg_read_val8(addr) &= ~((((unsigned char)1 << (bits)) - 1) << (pos))) |
| #define | uapi_reg_setbits8(addr, pos, bits, val) |
| #define | uapi_reg_getbits8(addr, pos, bits) ((uapi_reg_read_val8(addr) >> (pos)) & (((unsigned char)1 << (bits)) - 1)) |
| #define | fieldoffset(s, m) ((uint32_t) &(((s *)0)->m)) |
| 结构体成员偏移 | |
| #define array_size | ( | x | ) | (sizeof(x) / sizeof((x)[0])) |
| #define bit | ( | x | ) | (1UL << (uint32_t)(x)) |
| #define fieldoffset | ( | s, | |
| m | |||
| ) | ((uint32_t) &(((s *)0)->m)) |
结构体成员偏移
| #define hiu16 | ( | x | ) | ((uint16_t)(((uint32_t)(x) >> 16) & 0xFFFF)) |
| #define hiu32 | ( | x | ) | ((uint32_t)(((uint64_t)(x) >> 32) & 0xFFFFFFFF)) |
| #define hiu8 | ( | x | ) | ((uint8_t)(((uint16_t)(x) >> 8) & 0xFF)) |
| #define INLINE inline |
| #define likely | ( | x | ) | (x) |
| #define lou16 | ( | x | ) | ((uint16_t)(x)) |
| #define lou32 | ( | x | ) | ((uint32_t)(x)) |
| #define lou8 | ( | x | ) | ((uint8_t)(x)) |
| #define makeu16 | ( | a, | |
| b | |||
| ) | ((uint16_t)(((uint8_t)(a)) | ((uint16_t)((uint8_t)(b))) << 8)) |
| #define makeu32 | ( | a, | |
| b | |||
| ) | ((uint32_t)(((uint16_t)(a)) | ((uint32_t)((uint16_t)(b))) << 16)) |
| #define max | ( | x, | |
| y | |||
| ) | (((x) > (y)) ? (x) : (y)) |
| #define min | ( | x, | |
| y | |||
| ) | (((x) < (y)) ? (x) : (y)) |
| #define NULL 0L |
Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
Description: Common define
| #define STATIC static |
| #define uapi_max | ( | a, | |
| b | |||
| ) | (((a) > (b)) ? (a) : (b)) |
| #define uapi_min | ( | a, | |
| b | |||
| ) | (((a) < (b)) ? (a) : (b)) |
| #define uapi_reg_clrbit | ( | addr, | |
| pos | |||
| ) | ((uapi_reg_read_val32(addr)) &= ~((unsigned int)(1) << (pos))) |
| #define uapi_reg_clrbit16 | ( | addr, | |
| pos | |||
| ) | ((uapi_reg_read_val16(addr)) &= ~((unsigned short)(1) << (pos))) |
| #define uapi_reg_clrbit8 | ( | addr, | |
| pos | |||
| ) | ((uapi_reg_read_val8(addr)) &= ~((unsigned char)(1) << (pos))) |
| #define uapi_reg_clrbitmsk | ( | addr, | |
| msk | |||
| ) | ((uapi_reg_read_val32(addr)) &= ~(msk)) |
| #define uapi_reg_clrbits | ( | addr, | |
| pos, | |||
| bits | |||
| ) | (uapi_reg_read_val32(addr) &= ~((((unsigned int)1 << (bits)) - 1) << (pos))) |
| #define uapi_reg_clrbits16 | ( | addr, | |
| pos, | |||
| bits | |||
| ) |
| #define uapi_reg_clrbits8 | ( | addr, | |
| pos, | |||
| bits | |||
| ) | (uapi_reg_read_val8(addr) &= ~((((unsigned char)1 << (bits)) - 1) << (pos))) |
| #define uapi_reg_getbits | ( | addr, | |
| pos, | |||
| bits | |||
| ) | ((uapi_reg_read_val32(addr) >> (pos)) & (((unsigned int)1 << (bits)) - 1)) |
| #define uapi_reg_getbits16 | ( | addr, | |
| pos, | |||
| bits | |||
| ) | ((uapi_reg_read_val16(addr) >> (pos)) & (((unsigned short)1 << (bits)) - 1)) |
| #define uapi_reg_getbits8 | ( | addr, | |
| pos, | |||
| bits | |||
| ) | ((uapi_reg_read_val8(addr) >> (pos)) & (((unsigned char)1 << (bits)) - 1)) |
| #define uapi_reg_read | ( | addr, | |
| val | |||
| ) | ((val) = *(volatile unsigned int *)(uintptr_t)(addr)) |
| #define uapi_reg_read16 | ( | addr, | |
| val | |||
| ) | ((val) = *(volatile unsigned short *)(uintptr_t)(addr)) |
| #define uapi_reg_read32 | ( | addr, | |
| val | |||
| ) | ((val) = *(volatile unsigned int *)(uintptr_t)(addr)) |
| #define uapi_reg_read8 | ( | addr, | |
| val | |||
| ) | ((val) = *(volatile unsigned char *)(uintptr_t)(addr)) |
| #define uapi_reg_read_val16 | ( | addr | ) | (*(volatile unsigned short*)(uintptr_t)(addr)) |
| #define uapi_reg_read_val32 | ( | addr | ) | (*(volatile unsigned int*)(uintptr_t)(addr)) |
| #define uapi_reg_read_val8 | ( | addr | ) | (*(volatile unsigned char*)(uintptr_t)(addr)) |
| #define uapi_reg_setbit | ( | addr, | |
| pos | |||
| ) | ((uapi_reg_read_val32(addr)) |= ((unsigned int)(1) << (pos))) |
| #define uapi_reg_setbit16 | ( | addr, | |
| pos | |||
| ) | ((uapi_reg_read_val16(addr)) |= ((unsigned short)(1) << (pos))) |
| #define uapi_reg_setbit8 | ( | addr, | |
| pos | |||
| ) | ((uapi_reg_read_val8(addr)) |= ((unsigned char)(1) << (pos))) |
| #define uapi_reg_setbitmsk | ( | addr, | |
| msk | |||
| ) | ((uapi_reg_read_val32(addr)) |= (msk)) |
| #define uapi_reg_setbits | ( | addr, | |
| pos, | |||
| bits, | |||
| val | |||
| ) |
| #define uapi_reg_setbits16 | ( | addr, | |
| pos, | |||
| bits, | |||
| val | |||
| ) |
| #define uapi_reg_setbits8 | ( | addr, | |
| pos, | |||
| bits, | |||
| val | |||
| ) |
| #define uapi_reg_write | ( | addr, | |
| val | |||
| ) | (*(volatile unsigned int *)(uintptr_t)(addr) = (val)) |
| #define uapi_reg_write16 | ( | addr, | |
| val | |||
| ) | (*(volatile unsigned short *)(uintptr_t)(addr) = (val)) |
| #define uapi_reg_write32 | ( | addr, | |
| val | |||
| ) | (*(volatile unsigned int *)(uintptr_t)(addr) = (val)) |
| #define uapi_reg_write8 | ( | addr, | |
| val | |||
| ) | (*(volatile unsigned char *)(uintptr_t)(addr) = (val)) |
| #define unlikely | ( | x | ) | (x) |
| #define unused | ( | var | ) | (void)(var) |