📄 moto_flash_a.h
字号:
( \
(MOTO_FLASH_A_PARAM_CHECKING) ? \
( \
((MOTO_FLASH_A_Ptr) == NULL) ? MOTO_FLASH_A_ERR_INVALID_HANDLE : \
(((CycleType) != MOTO_FLASH_A_PROGRAM) && \
((CycleType) != MOTO_FLASH_A_ERASE) && \
((CycleType) != MOTO_FLASH_A_READ)) ? \
MOTO_FLASH_A_ERR_INVALID_CYCLE_TYPE : \
((BlocksToWrite) > MOTO_FLASH_A_ALL_BLOCKS || \
(BlocksToWrite) < MOTO_FLASH_A_NO_BLOCK_SELECTED ) ? \
MOTO_FLASH_A_ERR_INVALID_BLOCK_CONFIG : \
(((ShadowAccess) != MOTO_FLASH_A_ENABLE) && \
((ShadowAccess) != MOTO_FLASH_A_DISABLE)) ? \
MOTO_FLASH_A_ERR_INVALID_MODE : \
((((SystemClock) < CMFR_SYSTEM_CLOCK_MIN_FREQ ) || \
((SystemClock) > CMFR_SYSTEM_CLOCK_MAX_FREQ )) && \
((CycleType) != MOTO_FLASH_A_READ)) ? \
MOTO_FLASH_A_ERR_INVALID_SYSTEM_CLOCK : \
((((CycleType) == MOTO_FLASH_A_PROGRAM) && \
(PulseWidth) < CMFR_PROGRAM_PULSE_WIDTH_MIN) || \
(((CycleType) == MOTO_FLASH_A_PROGRAM) && \
(PulseWidth) > CMFR_PROGRAM_PULSE_WIDTH_MAX) || \
(((CycleType) == MOTO_FLASH_A_ERASE) && \
(PulseWidth) < CMFR_ERASE_PULSE_WIDTH_MIN) || \
(((CycleType) == MOTO_FLASH_A_ERASE) && \
(PulseWidth) > CMFR_ERASE_PULSE_WIDTH_MAX)) ? \
MOTO_FLASH_A_ERR_INVALID_PULSE_WIDTH : \
((BlocksToProtect) > MOTO_FLASH_A_ALL_BLOCKS || \
(BlocksToProtect) < MOTO_FLASH_A_NO_BLOCK_SELECTED ) ? \
MOTO_FLASH_A_ERR_INVALID_BLOCK_CONFIG : \
(((ReadWriteProtection) != MOTO_FLASH_A_READ_ONLY) && \
((ReadWriteProtection) != MOTO_FLASH_A_READ_WRITE) && \
((ReadWriteProtection) != \
MOTO_FLASH_A_NO_READ_WRITE_PROTECTION_CHANGE))? \
MOTO_FLASH_A_ERR_INVALID_PROTECTION : \
(((PrivilegeProtection) != MOTO_FLASH_A_USER_ACCESS) && \
((PrivilegeProtection) != MOTO_FLASH_A_SUPERVISOR_ACCESS) && \
((PrivilegeProtection) != \
MOTO_FLASH_A_NO_PRIVILEGE_CHANGE)) ? \
MOTO_FLASH_A_ERR_INVALID_PROTECTION : \
(((TextDataProtection) != MOTO_FLASH_A_DATA_ACCESS) && \
((TextDataProtection) != MOTO_FLASH_A_TEXT_AND_DATA_ACCESS) && \
((TextDataProtection) != \
MOTO_FLASH_A_NO_TEXT_DATA_PROTECTION_CHANGE)) ? \
MOTO_FLASH_A_ERR_INVALID_PROTECTION : \
MOTO_FLASH_A_Init_f( (MOTO_FLASH_A_Ptr), \
(CycleType), \
(BlocksToWrite), \
(ShadowAccess), \
(SystemClock), \
(PulseWidth), \
(BlocksToProtect), \
(ReadWriteProtection), \
(PrivilegeProtection), \
(TextDataProtection)) \
) \
: \
MOTO_FLASH_A_Init_f( (MOTO_FLASH_A_Ptr), \
(CycleType), \
(BlocksToWrite), \
(ShadowAccess), \
(SystemClock), \
(PulseWidth), \
(BlocksToProtect), \
(ReadWriteProtection), \
(PrivilegeProtection), \
(TextDataProtection)) \
) /* End of MOTO_FLASH_A_Init Macro */
/**********************************************************************/
/* Macro: MOTO_FLASH_A_EraseSerialMRVerify */
/* */
/* Purpose: Call MOTO_FLASH_A_EraseSerialMRVerify_f function with */
/* optional parameter checking. */
/* */
/* Input: */
/* MOTO_FLASH_A_Ptr : FLASH register block base address */
/* DeviceBaseAddress : array base address (chip select) */
/* BlocksToErase : Determines which block(s) to erase */
/* DataWidth : Determines if memory width is 2/4 bytes */
/* BlockSize : Determines array block size */
/* ShadowBlock : Determines shadow block number */
/* ShadowStartOffset : Determines start of shadow info as offset */
/* from device base address */
/* ShadowEndOffset : Determines end of shadow info as offset */
/* from device base address */
/* SystemClock : Specifies system clock in Hz */
/* PulseWidth : Specifies pulse width in uSec */
/* MaxPulses : Specifies maximum number of erase pulses */
/* */
/* Output: */
/* MOTO_FLASH_A_ERR_NONE : For successful completion */
/* MOTO_FLASH_A_ERR_INVALID_HANDLE : Device Address is zero */
/* MOTO_FLASH_A_ERR_INVALID_ADDRESS : Specified Address pointer is */
/* zero */
/* MOTO_FLASH_A_ERR_INVALID_BLOCK_CONFIG : BlocksToErase invalid */
/* MOTO_FLASH_A_ERR_INVALID_DATA_WIDTH : DataWidth input invalid */
/* MOTO_FLASH_A_ERR_INVALID_BLOCK_SIZE : BlockSize input invalid */
/* MOTO_FLASH_A_ERR_INVALID_SHADOW_BLOCK : ShadowBlock input invali*/
/* MOTO_FLASH_A_ERR_INVALID_SHADOW_OFFSET : ShadowStartOffset or */
/* ShadowEndOffset invalid*/
/* MOTO_FLASH_A_ERR_INVALID_SYSTEM_CLOCK : SystemClock input invali*/
/* MOTO_FLASH_A_ERR_INVALID_PULSE_WIDTH : PulseWidth input invalid */
/* MOTO_FLASH_A_ERR_INVALID_MAX_PULSES : MaxPulses input invalid */
/* MOTO_FLASH_A_ERR_ARRAY_ERASE_FAILURE: array erase failed within */
/* specified limit of MaxPulse/
/* MOTO_FLASH_A_ERR_SHADOW_ERASE_FAILURE: shadow erase failed withi*/
/* specified limit of MaxPuls*/
/* */
/**********************************************************************/
#define MOTO_FLASH_A_EraseSerialMRVerify( \
MOTO_FLASH_A_Ptr, \
DeviceBaseAddress, \
BlocksToErase, \
DataWidth, \
BlockSize, \
ShadowBlock, \
ShadowStartOffset, \
ShadowEndOffset, \
MaxPulses ) \
( \
(MOTO_FLASH_A_PARAM_CHECKING) ? \
( \
((MOTO_FLASH_A_Ptr) == NULL) ? MOTO_FLASH_A_ERR_INVALID_HANDLE : \
((BlocksToErase) > MOTO_FLASH_A_ALL_BLOCKS || \
(BlocksToErase) < MOTO_FLASH_A_NO_BLOCK_SELECTED ) ? \
MOTO_FLASH_A_ERR_INVALID_BLOCK_CONFIG : \
(((DataWidth) != MOTO_FLASH_A_2_BYTES) && \
((DataWidth) != MOTO_FLASH_A_4_BYTES)) ? \
MOTO_FLASH_A_ERR_INVALID_DATA_WIDTH : \
(((BlockSize) != MOTO_FLASH_A_16K_BYTES) && \
((BlockSize) != MOTO_FLASH_A_32K_BYTES)) ? \
MOTO_FLASH_A_ERR_INVALID_BLOCK_SIZE : \
(((ShadowBlock) != MOTO_FLASH_A_LOW_FILL_SHADOW_BLOCK) && \
((ShadowBlock) != MOTO_FLASH_A_HIGH_FILL_SHADOW_BLOCK)) ? \
MOTO_FLASH_A_ERR_INVALID_SHADOW_BLOCK : \
(((ShadowStartOffset)!= MOTO_FLASH_A_SHADOW_START_OFFSET_0_BYTES) && \
((ShadowStartOffset)!= MOTO_FLASH_A_SHADOW_START_OFFSET_16_BYTES))? \
MOTO_FLASH_A_ERR_INVALID_SHADOW_OFFSET : \
((ShadowEndOffset)!= MOTO_FLASH_A_SHADOW_END_OFFSET_256_BYTES) ? \
MOTO_FLASH_A_ERR_INVALID_SHADOW_OFFSET : \
((MaxPulses) != MOTO_FLASH_A_MAX_NUMBER_ERASE_PULSES ) ? \
MOTO_FLASH_A_ERR_INVALID_MAX_PULSES : \
MOTO_FLASH_A_EraseSerialMRVerify_f( (MOTO_FLASH_A_Ptr), \
(DeviceBaseAddress), \
(BlocksToErase), \
(DataWidth), \
(BlockSize), \
(ShadowBlock), \
(ShadowStartOffset), \
(ShadowEndOffset), \
(MaxPulses) ) \
) \
: \
MOTO_FLASH_A_EraseSerialMRVerify_f( (MOTO_FLASH_A_Ptr), \
(DeviceBaseAddress), \
(BlocksToErase), \
(DataWidth), \
(BlockSize), \
(ShadowBlock), \
(ShadowStartOffset), \
(ShadowEndOffset), \
(MaxPulses) ) \
) /* End of MOTO_FLASH_A_EraseSerialMRVerify Macro */
/**********************************************************************/
/* Macro: MOTO_FLASH_A_GetPulseStatus */
/* */
/* Purpose: Call MOTO_FLASH_A_GetPulseStatus_f with */
/* optional parameter checking */
/* */
/* Input: */
/* pMOTO_FLASH_A_Ptr : FLASH register block base address */
/* PulseStatus : Determines if high voltage pulse is active*/
/* */
/* Output: */
/* MOTO_FLASH_A_ERR_NONE : For successful completion */
/* MOTO_FLASH_A_ERR_BAD_RESULT_ADDR : Result Pointer is zero */
/* */
/**********************************************************************/
#define MOTO_FLASH_A_GetPulseStatus( \
MOTO_FLASH_A_Ptr, \
PulseStatus) \
( \
(MOTO_FLASH_A_PARAM_CHECKING) ? \
( \
((MOTO_FLASH_A_Ptr) == NULL) ? MOTO_FLASH_A_ERR_INVALID_HANDLE : \
((PulseStatus) == NULL) ? MOTO_FLASH_A_ERR_BAD_RESULT_ADDR : \
MOTO_FLASH_A_GetPulseStatus_f( (MOTO_FLASH_A_Ptr), \
(PulseStatus) ) \
) \
: \
MOTO_FLASH_A_GetPulseStatus_f( (MOTO_FLASH_A_Ptr), \
(PulseStatus) ) \
)/* End of MOTO_FLASH_A_GetPulseStatus Macro */
/**********************************************************************/
/* Macro: MOTO_FLASH_A_GetHighVoltageEnableStatus */
/* */
/* Purpose: Call MOTO_FLASH_A_GetHighVoltageEnableStatus_f with */
/* optional parameter checking */
/* */
/* Input:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -