bf0_hal_mailbox.h

Header file of Mailbox HAL module.

Author

Sifli software development team

Attention

Defines

MAILBOX_CHANNEL_1
MAILBOX_CHANNEL_2
MAILBOX_CHANNEL_3
MAILBOX_CHANNEL_4
MAILBOX_CHANNEL_5
MAILBOX_CHANNEL_6
MAILBOX_CHANNEL_7
MAILBOX_CHANNEL_8
MAILBOX_CHANNEL_9
MAILBOX_CHANNEL_10
MAILBOX_CHANNEL_11
MAILBOX_CHANNEL_12
MAILBOX_CHANNEL_13
MAILBOX_CHANNEL_14
MAILBOX_CHANNEL_15
MAILBOX_CHANNEL_16
HMUTEX_CHANNLE_NUM
LMUTEX_CHANNLE_NUM
__HAL_MAILBOX_MASK_CHANNEL_IT(__HANDLE__, __CHINDEX__)

Mask the specified interrupt.

参数:
  • __HANDLE__ – specifies the MAILBOX Handle

  • __CHINDEX__ – specifies the channels number: This parameter can be one of the following values (MAILBOX Channel):

    • MAILBOX_CHANNEL_1: MAILBOX Channel 1

    • MAILBOX_CHANNEL_2: MAILBOX Channel 2

    • MAILBOX_CHANNEL_3: MAILBOX Channel 3

    • MAILBOX_CHANNEL_4: MAILBOX Channel 4

    • MAILBOX_CHANNEL_5: MAILBOX Channel 5

    • MAILBOX_CHANNEL_6: MAILBOX Channel 6

__HAL_MAILBOX_UNMASK_CHANNEL_IT(__HANDLE__, __CHINDEX__)

Unmask the specified interrupt.

参数:
  • __HANDLE__ – specifies the MAILBOX Handle

  • __CHINDEX__ – specifies the channels number: This parameter can be one of the following values (MAILBOX Channel):

    • MAILBOX_CHANNEL_1: MAILBOX Channel 1

    • MAILBOX_CHANNEL_2: MAILBOX Channel 2

    • MAILBOX_CHANNEL_3: MAILBOX Channel 3

    • MAILBOX_CHANNEL_4: MAILBOX Channel 4

    • MAILBOX_CHANNEL_5: MAILBOX Channel 5

    • MAILBOX_CHANNEL_6: MAILBOX Channel 6

__HAL_MAILBOX_TRIGGER_CHANNEL_IT(__HANDLE__, __CHINDEX__)

Trigger the specified interrupt.

参数:
  • __HANDLE__ – specifies the MAILBOX Handle

  • __CHINDEX__ – specifies the channels number : This parameter can be one of the following values (MAILBOX Channel):

    • MAILBOX_CHANNEL_1: MAILBOX Channel 1

    • MAILBOX_CHANNEL_2: MAILBOX Channel 2

    • MAILBOX_CHANNEL_3: MAILBOX Channel 3

    • MAILBOX_CHANNEL_4: MAILBOX Channel 4

    • MAILBOX_CHANNEL_5: MAILBOX Channel 5

    • MAILBOX_CHANNEL_6: MAILBOX Channel 6

__HAL_MAILBOX_CHECK_CHANNEL_IT(__HANDLE__, __CHINDEX__)

Check whether interrupt has been handled.

参数:
  • __HANDLE__ – specifies the MAILBOX Handle

  • __CHINDEX__ – specifies the channels number : This parameter can be one of the following values (MAILBOX Channel):

    • MAILBOX_CHANNEL_1: MAILBOX Channel 1

    • MAILBOX_CHANNEL_2: MAILBOX Channel 2

    • MAILBOX_CHANNEL_3: MAILBOX Channel 3

    • MAILBOX_CHANNEL_4: MAILBOX Channel 4

    • MAILBOX_CHANNEL_5: MAILBOX Channel 5

    • MAILBOX_CHANNEL_6: MAILBOX Channel 6

返回值:
  • 0 – interrupt has been handled

  • others – interrupt has not been handled

__HAL_MAILBOX_CLEAR_CHANNEL_IT(__HANDLE__, __CHINDEX__)

Clear the specified interrupt.

参数:
  • __HANDLE__ – specifies the MAILBOX Handle

  • __CHINDEX__ – specifies the channels number : This parameter can be one of the following values (MAILBOX Channel):

    • MAILBOX_CHANNEL_1: MAILBOX Channel 1

    • MAILBOX_CHANNEL_2: MAILBOX Channel 2

    • MAILBOX_CHANNEL_3: MAILBOX Channel 3

    • MAILBOX_CHANNEL_4: MAILBOX Channel 4

    • MAILBOX_CHANNEL_5: MAILBOX Channel 5

    • MAILBOX_CHANNEL_6: MAILBOX Channel 6

__HAL_MAILBOX_GET_STATUS(__HANDLE__)

get the masked ISR status

参数:
  • __HANDLE__ – specifies the MAILBOX Handle

返回值:

masked – ISR status, uint32_t type

__HAL_MAILBOX_CLEAR_STATUS(__HANDLE__, __STATUS__)

clear the ISR status

参数:
  • __HANDLE__ – specifies the MAILBOX Handle

  • __STATUS__ – status value to be cleared

Typedefs

typedef struct __MAILBOX_HandleTypeDef MAILBOX_HandleTypeDef

MAILBOX handle structure definition.

typedef struct __MUTEX_HandleTypeDef MUTEX_HandleTypeDef

MUTEX handle structure definition.

Enums

enum HAL_MAILBOX_StateTypeDef

HAL MAILBOX State structures definition.

Values:

enumerator HAL_MAILBOX_STATE_RESET

MAILBOX not yet initialized or disabled

enumerator HAL_MAILBOX_STATE_READY

MAILBOX initialized and ready for use

enumerator HAL_MAILBOX_STATE_BUSY

MAILBOX internal processing is ongoing

enum MUTEX_LockCoreIdTypeDef

MUTEX channel status structure definition.

Values:

enumerator MUTEX_UNLOCKED

MUTEX is not locked

enumerator MUTEX_HCPU_LOCKED

MUTEX is locked by HCPU

enumerator MUTEX_LCPU_LOCKED

MUTEX is locked by LCPU

enumerator MUTEX_BCPU_LOCKED

MUTEX is locked by BCPU

enumerator MUTEX_LOCK_CORE_INVALID

Functions

HAL_StatusTypeDef HAL_MAILBOX_Init(MAILBOX_HandleTypeDef *hmailbox)

Initialize the MAILBOX peripheral.

参数:
  • hmailbox – MAILBOX handle

返回值:

HAL – status

HAL_StatusTypeDef HAL_MAILBOX_DeInit(MAILBOX_HandleTypeDef *hmailbox)

DeInitialize the MAILBOX peripheral.

参数:
  • hmailbox – MAILBOX handle

返回值:

HAL – status

void HAL_MAILBOX_MspInit(MAILBOX_HandleTypeDef *hmailbox)

Initialize the MAILBOX MSP.

参数:
  • hmailbox – MAILBOX handle

返回值:

None

void HAL_MAILBOX_MspDeInit(MAILBOX_HandleTypeDef *hmailbox)

MAILBOX MSP DeInit.

参数:
  • hmailbox – MAILBOX handle

返回值:

None

HAL_MAILBOX_StateTypeDef HAL_MAILBOX_GetState(MAILBOX_HandleTypeDef const *const hmailbox)

Return the MAILBOX handle state.

参数:
  • hmailbox – MAILBOX handle

返回值:

MAILBOX – handle state

MUTEX_LockCoreIdTypeDef HAL_MAILBOX_Lock(MUTEX_HandleTypeDef const *const hmutex, uint8_t ch_id)

Lock mutex.

参数:
  • hmutex – mutex handle

  • ch_id – channel id, range, 0~1, it’s used if mutex instance is not specified

返回值:

0 – lock succeed, >0: lock fail, core

MUTEX_LockCoreIdTypeDef HAL_MAILBOX_LockEx(MUTEX_HandleTypeDef const *const hmutex, uint8_t ch_id, uint32_t timeout_ms)

Lock mutex advanced version.

参数:
  • hmutex – mutex handle

  • ch_id – channel id, range, 0~1, it’s used if mutex instance is not specified

  • timeout_ms – time out value in ms.

返回值:

0 – lock succeed, >0: lock fail, core

MUTEX_CH_TypeDef *HAL_MAILBOX_GetMutex(uint8_t core_id, uint8_t ch_id)

Get mutex based on CPU core and channel.

参数:
  • core_id – core ID, CORE_ID_HCPU/CORE_ID_LCPU/CORE_ID_BCPU

  • ch_id – channel id, range, 0~1, it’s used if mutex instance is not specified

返回值:

Mutex – handle if successful, NULL if failed.

void HAL_MAILBOX_UnLock(MUTEX_HandleTypeDef const *const hmutex, uint8_t ch_id)

Unlock mutex.

参数:
  • hmutex – mutex handle

  • ch_id – channel id, range, 0~1, it’s used if mutex instance is not specified

返回值:

void

void HAL_MAILBOX_IRQHandler(MAILBOX_HandleTypeDef *hmailbox)

mailbox irq handler

参数:
  • hmailbox[in] mailbox handle

struct MAILBOX_CH_TypeDef

Public Members

uint32_t CxIER
uint32_t CxITR
uint32_t CxICR
uint32_t CxISR
uint32_t CxMISR
struct MUTEX_CH_TypeDef

Public Members

uint32_t CxEXR
struct __MAILBOX_HandleTypeDef
#include <bf0_hal_mailbox.h>

MAILBOX handle structure definition.

Public Members

MAILBOX_CH_TypeDef *Instance

MAILBOX registers base address

HAL_MAILBOX_StateTypeDef State

MAILBOX State: initialized or not

void (*NotificationCallback)(struct __MAILBOX_HandleTypeDef *hmailbox, uint8_t ch_idx)

notification callback

Param hmailbox:

[in] mailbox handle

Param [in:

ch_idx channel index, starting from 0, refer to MAILBOX Channel

struct __MUTEX_HandleTypeDef
#include <bf0_hal_mailbox.h>

MUTEX handle structure definition.

Public Members

MUTEX_CH_TypeDef *Instance

MAILBOX registers base address