Microcontroller functions

Description

Microcontroller functions.

See also hal/micro/cortexm3/micro.h for source code.

Many of the supplied example applications use these microcontroller functions. See hal/micro/micro.h for source code.

Note
The term SFD refers to the Start Frame Delimiter.

Functions

void halInternalSysReset (uint16_t extendedCause)
Records the specified reset cause then forces a reboot.
uint16_t halGetExtendedResetInfo (void)
Returns the Extended Reset Cause information.
uint8_t halGetEm2xxResetInfo (void)
Calls halGetExtendedResetInfo() and translates the EM35x reset code to the corresponding value used by the EM2XX HAL.
const char * halGetExtendedResetString (void)
Calls halGetExtendedResetInfo() and supplies a string describing the extended cause of the reset.
void halInit (void)
Initializes microcontroller-specific peripherals.
void halReboot (void)
Restarts the microcontroller and therefore everything else.
void halInternalEnableWatchDog (void)
Enables the watchdog timer.
void halInternalDisableWatchDog (uint8_t magicKey)
Disables the watchdog timer.
bool halInternalWatchDogEnabled (void)
Determines whether the watchdog has been enabled or disabled.
void halResetWatchdog (void)
void halInternalSetCtune (uint16_t tune)
Change the CTUNE value.
uint16_t halInternalGetCtune (void)
Get the CTUNE value.
uint8_t halGetResetInfo (void)
Gets information about what caused the microcontroller to reset.
const char * halGetResetString (void)
Calls halGetResetInfo() and supplies a string describing it.

Macros

#define EM2XX_RESET_UNKNOWN 0
EM2xx-compatible reset code returned by halGetEm2xxResetInfo()
#define EM2XX_RESET_EXTERNAL 1
#define EM2XX_RESET_POWERON 2
#define EM2XX_RESET_WATCHDOG 3
#define EM2XX_RESET_ASSERT 6
#define EM2XX_RESET_BOOTLOADER 9
#define EM2XX_RESET_SOFTWARE 11
#define MICRO_DISABLE_WATCH_DOG_KEY 0xA5U
The value that must be passed as the single parameter to halInternalDisableWatchDog() in order to successfully disable the watchdog timer.

Vector Table Index Definitions

These are numerical definitions for vector table.

Only Cortex-M standard exception vectors (indices 0 through 15) are represented since device specific vectors can be (and often are) different across dies.

#define STACK_VECTOR_INDEX 0U
A numerical definition for a vector.
#define RESET_VECTOR_INDEX 1U
#define NMI_VECTOR_INDEX 2U
#define HARD_FAULT_VECTOR_INDEX 3U
#define MEMORY_FAULT_VECTOR_INDEX 4U
#define BUS_FAULT_VECTOR_INDEX 5U
#define USAGE_FAULT_VECTOR_INDEX 6U
#define RESERVED07_VECTOR_INDEX 7U
#define RESERVED08_VECTOR_INDEX 8U
#define RESERVED09_VECTOR_INDEX 9U
#define RESERVED10_VECTOR_INDEX 10U
#define SVCALL_VECTOR_INDEX 11U
#define DEBUG_MONITOR_VECTOR_INDEX 12U
#define RESERVED13_VECTOR_INDEX 13U
#define PENDSV_VECTOR_INDEX 14U
#define SYSTICK_VECTOR_INDEX 15U
#define IRQ_TO_VECTOR_NUMBER (x)   ((x) + 16U)
Utility macro to convert from IRQ numbers to exception numbers/ vector indices.
#define VECTOR_TABLE_LENGTH ( IRQ_TO_VECTOR_NUMBER (EXT_IRQ_COUNT))
Number of vectors.

Function Documentation

halInternalSysReset()

void halInternalSysReset ( uint16_t extendedCause )

Records the specified reset cause then forces a reboot.

halGetExtendedResetInfo()

uint16_t halGetExtendedResetInfo ( void )

Returns the Extended Reset Cause information.

Returns
A 16-bit code identifying the base and extended cause of the reset

halGetEm2xxResetInfo()

uint8_t halGetEm2xxResetInfo ( void )

Calls halGetExtendedResetInfo() and translates the EM35x reset code to the corresponding value used by the EM2XX HAL.

Any reset codes not present in the EM2XX are returned after being OR'ed with 0x80.

@appusage Used by the EZSP host as a platform-independent NCP reset code.

Returns
The EM2XX-compatible reset code. If not supported by the EM2XX, return the platform-specific code with B7 set.

halGetExtendedResetString()

const char* halGetExtendedResetString ( void )

Calls halGetExtendedResetInfo() and supplies a string describing the extended cause of the reset.

halGetResetString() should also be called to get the string for the base reset cause

@appusage Useful for diagnostic printing of text just after program initialization.

Returns
A pointer to a program space string.

halInit()

void halInit ( void )

Initializes microcontroller-specific peripherals.

halReboot()

void halReboot ( void )

Restarts the microcontroller and therefore everything else.

halInternalEnableWatchDog()

void halInternalEnableWatchDog ( void )

Enables the watchdog timer.

halInternalDisableWatchDog()

void halInternalDisableWatchDog ( uint8_t magicKey )

Disables the watchdog timer.

Note
To prevent the watchdog from being disabled accidentally, a magic key must be provided.
Parameters
magicKey A value ( MICRO_DISABLE_WATCH_DOG_KEY ) that enables the function.

halInternalWatchDogEnabled()

bool halInternalWatchDogEnabled ( void )

Determines whether the watchdog has been enabled or disabled.

Returns
A bool value indicating if the watchdog is current enabled.

halInternalSetCtune()

void halInternalSetCtune ( uint16_t tune )

Change the CTUNE value.

Involves switching to HFRCO and turning off the HFXO temporarily.

Parameters
tune Value to set CTUNE to.

halInternalGetCtune()

uint16_t halInternalGetCtune ( void )

Get the CTUNE value.

Returns
Current CTUNE value.

halGetResetInfo()

uint8_t halGetResetInfo ( void )

Gets information about what caused the microcontroller to reset.

Returns
A code identifying the cause of the reset.

halGetResetString()

const char* halGetResetString ( void )

Calls halGetResetInfo() and supplies a string describing it.

@appusage Useful for diagnostic printing of text just after program initialization.

Returns
A pointer to a program space string.

Macro Definition Documentation

STACK_VECTOR_INDEX

#define STACK_VECTOR_INDEX   0U

A numerical definition for a vector.

IRQ_TO_VECTOR_NUMBER

#define IRQ_TO_VECTOR_NUMBER ( x ) ((x) + 16U)

Utility macro to convert from IRQ numbers to exception numbers/ vector indices.

These are different because the latter include the Cortex-M standard exceptions while the former do not.

VECTOR_TABLE_LENGTH

#define VECTOR_TABLE_LENGTH   ( IRQ_TO_VECTOR_NUMBER (EXT_IRQ_COUNT))

Number of vectors.

EXT_IRQ_COUNT is defined in the device header but does not include the Cortex-M standard exceptions.

EM2XX_RESET_UNKNOWN

#define EM2XX_RESET_UNKNOWN   0

EM2xx-compatible reset code returned by halGetEm2xxResetInfo()

MICRO_DISABLE_WATCH_DOG_KEY

#define MICRO_DISABLE_WATCH_DOG_KEY   0xA5U

The value that must be passed as the single parameter to halInternalDisableWatchDog() in order to successfully disable the watchdog timer.