General purpose utilities and cross-compiler support.
This SDK supports the following compilers/IDEs:
-
Simplicity Studio
-
IAR Embedded Workbench
-
Keil µVision IDE
-
Plain armgcc
Certain compiler features such as alignment is implemented differently in the tools. Therefore, macros such as
SL_ALIGN
are provided to enable compiler independent code.
-
Note
-
RAM code macros are implemented in a separate module
RAMFUNC - RAM Function Support
. Cross-compiler RAM code support needs extended documentation and it is therefore implemented as a separate module.
|
uint32_t
|
SL_CTZ
(uint32_t value)
|
|
Count trailing number of zeros.
|
|
uint32_t
|
SL_RBIT
(uint32_t value)
|
|
Reverse the bits.
|
|
uint32_t
|
SL_RBIT16
(uint32_t value)
|
|
Reverse the bits.
|
|
uint32_t
|
SL_Log2ToDiv
(uint32_t log2)
|
|
Convert logarithm of 2 to division factor.
|
|
|
#define
|
SL_CEILING
(n, i) ((((n) + (i) - 1U) / (i)) * (i))
|
|
Round n up to closest interval of i.
|
|
#define
|
SL_FLOOR
(n, i) ((n / i) * i)
|
|
Round n down to closest interval of i.
|
|
#define
|
STRINGIZE
(X) #X
|
|
Stringify X.
|
|
#define
|
SL_MIN
(a, b) __extension__({ __typeof__(a)_a = (a); __typeof__(b)_b = (b); _a < _b ? _a : _b; })
|
|
A macro for getting the minimum value.
|
|
#define
|
SL_MAX
(a, b) __extension__({ __typeof__(a)_a = (a); __typeof__(b)_b = (b); _a > _b ? _a : _b; })
|
|
A macro for getting the maximum value.
|
|
#define
|
SL_ATTRIBUTE_PACKED
__attribute__ ((packed))
|
|
A GCC style macro for handling packed structures.
|
|
#define
|
SL_PACK_START
(x)
|
|
A macro for handling packed structures.
|
|
#define
|
SL_PACK_END
()
|
|
A macro for handling packed structures.
|
|
#define
|
SL_ATTRIBUTE_ALIGN
(X) __attribute__ ((aligned(X)))
|
|
GCC style macro for aligning a variable.
|
|
#define
|
SL_ALIGN
(X)
|
|
A macro for aligning a variable.
|
|
#define
|
SL_WEAK
__attribute__ ((weak))
|
|
A macro for defining a weak symbol.
|
|
#define
|
SL_NORETURN
__attribute__ ((noreturn))
|
|
A macro for handling non-returning functions.
|
|
#define
|
SL_ATTRIBUTE_SECTION
(X) __attribute__ ((section(X)))
|
|
A macro for placing a variable in a section.
|
|
#define
|
SL_FALLTHROUGH
|
|
A macro for notifying the compiler of an intended switch case fallthrough.
|
|
◆
SL_CTZ()
uint32_t SL_CTZ
|
(
|
uint32_t
|
value
|
)
|
|
|
inline
|
Count trailing number of zeros.
Use CLZ instruction if available.
-
Parameters
-
[in]
|
value
|
Data value to check for number of trailing zero bits.
|
-
Returns
-
A number of trailing zeros in value.
◆
SL_RBIT()
uint32_t SL_RBIT
|
(
|
uint32_t
|
value
|
)
|
|
|
|