www.pudn.com > at91rm9200bsp.rar > at91pmc.c



/*
 *	PMC initial routine
 *	when we start up, fllow RGE already initialized:
 *	CKGR_MOR
 *	CKGR_PLLA
 *	PMC_MCKR
 *	PMC_IDR
 *	this should enable base system running
 *	next we need to initialize fllowing REG:
 *	PMC_SCER
 *	PMC_SCDR
 *	PMC_SCER
 *	PMC_PCDR
 *	PMC system interrupt, PLLB is not use, reset PLLB to quite state
 */

void Init_PMC()
{
	int dummy, i;
	PMC_S* pPmc = (PMC_S*)(PMC_BASE_ADDR);

	pPmc ->PMC_SCER = PMC_SCER_STARTUP_VALUE;
	pPmc ->PMC_SCDR = PMC_SCDR_STARTUP_VALUE;
	
	pPmc ->PMC_PCER = PMC_PCER_STARTUP_VALUE;
	pPmc ->PMC_PCDR = (~(PMC_PCER_STARTUP_VALUE) );

	/*
	 *	set PLLB to quite state
	 */
	pPmc ->CKGR_PLLBR = (0x3F<<8);
	/*
	 *	delay a while for stablized
	 */
	for( i = 0; i<1000; i++ )
		dummy = pPmc ->PMC_SR;	
}