Chip_SetupIrcClocking(BOARD_MAINCLOCKRATE);
所以这里的时钟是100M,关于对定时器的配置,也蛮简单的,不得不再次强调写NXP库的工程师团队水平了得,其实不单单是软件工程师的功劳,和硬件设计的时候也是息息相关的,这些是和寄存器设计有关的,不多说了。
/**
* [url=home.php?mod=space&uid=159083]@brief[/url] TIMER1_Init
* [url=home.php?mod=space&uid=536309]@NOTE[/url] TIMER1初始化
* @param none
* @retval none
*/
void TIMER1_Init(void)
{
/*
* 设置PR=100
* TIMER1时钟=PCLK(100M)/100 = 1M = 1000K
*/
Chip_TIMER_Init(LPC_TIMER1);
Chip_TIMER_PrescaleSet(LPC_TIMER1, 100);
Chip_TIMER_Reset(LPC_TIMER1);
Chip_TIMER_MatchEnableInt(LPC_TIMER1, 1);
Chip_TIMER_SetMatch(LPC_TIMER1, 1, Chip_Clock_GetAsyncSyscon_ClockRate());
Chip_TIMER_ResetOnMatchEnable(LPC_TIMER1, 1);
Chip_TIMER_Disable(LPC_TIMER1);
NVIC_ClearPendingIRQ(CT32B1_IRQn);
NVIC_EnableIRQ(CT32B1_IRQn);
}
配置如上,这里需要注意PR的理解和设置,这里初始化禁止了TIMER1,此处的TIMER1用于us的精确延时,因为6lowpan涉及的协议栈、RAIDO驱动都蛮在意这个us延时的。
这玩意很简单,不过得用心,NXP提供的文档和驱动包都能满足你,随便哪个外设都还是很方便就能用起来的。大家有关于通用定时器的问题可以在这个帖子中跟帖讨论,不写了,打算去继续搞一下,希望能移植结束。 |