📄 timer.c
字号:
//-----------------------------------------------------------------------------
//
// Copyright (C) 2004, Freescale Semiconductor, Inc. All Rights Reserved
// THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
// BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
// FREESCALE SEMICONDUCTOR, INC.
//
//-----------------------------------------------------------------------------
//
// Module: timer.c
//
// This module provides the BSP-specific interfaces required to support
// the PQOAL timer code.
//
//-----------------------------------------------------------------------------
#include <bsp.h>
extern void OALCPUEnterWFI(void);
extern PCSP_AVIC_REGS g_pAVIC;
extern PCSP_PBC_REGS g_pPBC;
extern UINT32 g_SREV;
//-----------------------------------------------------------------------------
//
// Function: OALTimerGetClkSrc
//
// This function returns the clock source setting used to program the EPIT_CR
// CLKSRC bits.
//
// Parameters:
// None.
//
// Returns:
// None.
//
//-----------------------------------------------------------------------------
UINT32 OALTimerGetClkSrc(void)
{
#ifdef VPMX31
return EPIT_CR_CLKSRC_CKIL;
#else
return EPIT_CR_CLKSRC_CKIH;
#endif
}
//-----------------------------------------------------------------------------
//
// Function: OALTimerGetClkPrescalar
//
// This function returns the clock prescalar used to program the EPIT_CR
// PRESCALER bits.
//
// Parameters:
// None.
//
// Returns:
// None.
//
//-----------------------------------------------------------------------------
UINT32 OALTimerGetClkPrescalar(void)
{
#ifdef VPMX31
return 0;
#else
return BSP_EPIT_PRESCALAR;
#endif
}
//-----------------------------------------------------------------------------
//
// Function: OALTimerGetClkFreq
//
// This function returns the frequency of the EPIT input clock.
//
// Parameters:
// None.
//
// Returns:
// None.
//
//-----------------------------------------------------------------------------
UINT32 OALTimerGetClkFreq(void)
{
#ifdef VPMX31
return BSP_CLK_CKIL_FREQ;
#else
BSP_ARGS *pBspArgs = (BSP_ARGS *)IMAGE_SHARE_ARGS_UA_START;
return pBspArgs->clockFreq[DDK_CLOCK_SIGNAL_PER];
#endif
}
//-----------------------------------------------------------------------------
//
// Function: OALCPUIdle
//
// This function puts the CPU or SOC in idle state. The CPU or SOC
// should exit the idle state when an interrupt occurs. This function is
// called with interrupts are disabled. When this function returns, interrupts
// must be disabled also.
//
// Parameters:
// None.
//
// Returns:
// None.
//
//-----------------------------------------------------------------------------
VOID OALCPUIdle()
{
#ifdef BSP_FAKE_IDLE
// Wait until AVIC reports an interrupt is pending
while((!INREG32(&g_pAVIC->NIPNDH)) && (!INREG32(&g_pAVIC->NIPNDL)));
#else
// Check silicon rev and avoid WFI on rev 1.0 silicon
if (g_SREV == 0)
{
// Wait until AVIC reports an interrupt is pending
while((!INREG32(&g_pAVIC->NIPNDH)) && (!INREG32(&g_pAVIC->NIPNDL)));
}
else
{
//OUTREG16(&g_pPBC->BCTRL1_SET, CSP_BITFMASK(PBC_BCTRL1_SET_LED0));
// Enter wait-for-interrupt mode
OALCPUEnterWFI();
//OUTREG16(&g_pPBC->BCTRL1_CLEAR, CSP_BITFMASK(PBC_BCTRL1_CLEAR_LED0));
}
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -