COMMONEMLIB

Detailed Description

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 . Cross-compiler RAM code support needs extended documentation and it is therefore implemented as a separate module.

Macros

#define SL_ALIGN (X)
A macro for aligning a variable.
Use this macro before the variable definition.
X denotes the storage alignment value in bytes.
To be GCC-compatible, use SL_ATTRIBUTE_ALIGN(X) before the semicolon on normal variables. Use SL_ATTRIBUTE_ALIGN(X) before the opening curly brace on structure variables.
#define SL_ATTRIBUTE_ALIGN (X)   __attribute__ ((aligned(X)))
GCC style macro for aligning a variable.
#define SL_ATTRIBUTE_PACKED __attribute__ ((packed))
A GCC style macro for handling packed structures.
#define SL_ATTRIBUTE_SECTION (X)   __attribute__ ((section(X)))
#define SL_CEILING (n, i)    ((((n) + (i) - 1U) / (i)) * (i))
Round n up to closest interval of i.
#define SL_FALLTHROUGH
A macro for notifying the compiler of an intended switch case fallthrough.
#define SL_FLOOR (n, i)   ((n / i) * i))
Round n down to closest interval of i.
#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. No sideeffects, a and b are evaluated one time only.
#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. No sideeffects, a and b are evaluated one time only.
#define SL_NORETURN __attribute__ ((noreturn))
A macro for handling non-returning functions.
#define SL_PACK_END ()
A macro for handling packed structures.
Use this macro after the structure definition.
With GCC, add SL_ATTRIBUTE_PACKED after the closing curly braces of the structure definition.
#define SL_PACK_START (x)
A macro for handling packed structures.
Use this macro before the structure definition.
X denotes the maximum alignment of structure members. X is not supported with GCC. GCC always uses 1 byte maximum alignment.
#define SL_WEAK __attribute__ ((weak))
A macro for defining a weak symbol.
#define STRINGIZE (X)   #X
Stringify X.

Functions

__STATIC_INLINE uint32_t EFM32_CTZ (uint32_t value)
__STATIC_INLINE uint32_t SL_CTZ (uint32_t value)
Count trailing number of zeros. Use CLZ instruction if available.
__STATIC_INLINE uint32_t SL_Log2ToDiv (uint32_t log2)
Convert logarithm of 2 to division factor.
__STATIC_INLINE uint32_t SL_RBIT (uint32_t value)
Reverse the bits. Use the RBIT instruction if available, else process.
__STATIC_INLINE uint32_t SL_RBIT16 (uint32_t value)
Reverse the bits. Use the RBIT instruction if available, else process.

Macro Definition Documentation

#define SL_ATTRIBUTE_SECTION ( X ) __attribute__ ((section(X)))

A macro for placing a variable in a section.
Use this macro after the variable definition, before the equal sign or a semicolon.
X denotes the section to place the variable in.

Definition at line 201 of file em_common.h .

Function Documentation

__STATIC_INLINE uint32_t SL_CTZ ( uint32_t value )

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.

Definition at line 223 of file em_common.h .

Referenced by GPIOINT_CallbackRegister() , and RMU_ResetControl() .

__STATIC_INLINE uint32_t SL_Log2ToDiv ( uint32_t log2 )

Convert logarithm of 2 to division factor.

Parameters
[in] log2 Logarithm of 2.
Returns
Dividend.

Definition at line 298 of file em_common.h .

Referenced by CMU_ClockDivGet() , CMU_ClockFreqGet() , CMU_ClockPrescGet() , CMU_Log2ToDiv() , and CMU_PrescToLog2() .

__STATIC_INLINE uint32_t SL_RBIT ( uint32_t value )

Reverse the bits. Use the RBIT instruction if available, else process.

Parameters
[in] value Data value to reverse.
Returns
A reversed value.

Definition at line 253 of file em_common.h .

Referenced by SL_RBIT16() .

__STATIC_INLINE uint32_t SL_RBIT16 ( uint32_t value )

Reverse the bits. Use the RBIT instruction if available, else process.

Parameters
[in] value 16-bit data value to reverse.
Returns
A 16-bit reversed value.

Definition at line 283 of file em_common.h .

References SL_RBIT() .

Referenced by GPCRC_Init() .