void __section(SectionForFlashOperations) LPC24XX_TIME_Driver::Sleep_uSec_Loop( UINT32 uSec ) { // iterations must be signed so that negative iterations will result in the minimum delay uSec *= (SYSTEM_CYCLE_CLOCK_HZ / CLOCK_COMMON_FACTOR); uSec /= (ONE_MHZ / CLOCK_COMMON_FACTOR); // iterations is equal to the number of CPU instruction cycles in the required time minus // overhead cycles required to call this subroutine. int iterations = (int)uSec - 12; // Subtract off call & calculation overhead CYCLE_DELAY_LOOP(iterations); }
void HAL_Time_Sleep_MicroSeconds_InterruptEnabled( UINT32 uSec ) { // iterations must be signed so that negative iterations will result in the minimum delay uSec *= (SYSTEM_CYCLE_CLOCK_HZ / CLOCK_COMMON_FACTOR); uSec /= (ONE_MHZ / CLOCK_COMMON_FACTOR); // iterations is equal to the number of CPU instruction cycles in the required time minus // overhead cycles required to call this subroutine. int iterations = (int)uSec - 5; // Subtract off call & calculation overhead CYCLE_DELAY_LOOP(iterations); }
BOOL __section("SectionForFlashOperations")I28F_16_BS_Driver::ChipReadOnly( void* context, BOOL On, UINT32 ProtectionKey ) { NATIVE_PROFILE_HAL_DRIVERS_FLASH(); MEMORY_MAPPED_NOR_BLOCK_CONFIG* config = (MEMORY_MAPPED_NOR_BLOCK_CONFIG*)context; if(ProtectionKey != FLASH_PROTECTION_KEY) { ASSERT(0); return FALSE; } config->ChipProtection = On ? 0 : ProtectionKey; CPU_EBIU_Memory_ReadOnly( config->Memory, On ); if(config->BlockConfig.WriteProtectionPin.Pin != GPIO_PIN_NONE) { CPU_GPIO_SetPinState( config->BlockConfig.WriteProtectionPin.Pin, On ? config->BlockConfig.WriteProtectionPin.ActiveState: !config->BlockConfig.WriteProtectionPin.ActiveState ); // we need 200nS setup on FLASH_WP_L CYCLE_DELAY_LOOP( 6 ); // 5.52 clock cycles @ 27.6 clocks/uSec } return TRUE; }