[8/16-bit MCU] [LPC54100] 通用定时器使用

[复制链接]
1196|3
 楼主| 春风的暖暖 发表于 2016-1-15 21:29 | 显示全部楼层 |阅读模式
开头引用我回复freebsder帖子的话,那是一篇对低功耗分析相当专业的帖子,大家有兴趣去看一下。



       我个人越来越喜欢这颗IC了,低功耗方面看怎么用,在提供合理的CPU性能的情况下功耗能控制得很合理,起码NXP给我考虑的很周到了。
其次对于内置的BAKUP SRAM区域可以说是一大特色,相比TI或者其他厂家的全部保持的做法有不少新意。
最后关于文档和CODE,虽然不足够多,但是给出的基本上也足够用了,关键还是要用心看,对于新手可能会有一些问题,其实我真正打算把这颗IC用起来是从昨天晚上开始的,已经在移植6lowpan了,接触了蛮多的外设,对他的文档和官方的驱动有了更深刻的认识,。
恩,要是有机会的话,以后要是允许我会重点把LPC54102平台化,作为项目中低功耗/传感/运算场合的通用平台,好好去维护。




      开始移植6lowpan协议栈,涉及的外设还挺多的,昨天晚上才开始,估计明天完成不了了,分享一些相关的东西吧。需要蛮多的timer和clock,拿最简单的通用定时器来搞吧,简单些。

先看看时钟树吧,蛮有必要的,从LPC5410x Standard counter/timers部分看出时钟来至APB,而APB的时钟从下面的时钟树看到来至几个地方,看程序中设置。
  1. /*
  2. * Main system clock rate in Hz for this board. Select a clock rate between
  3. * 1500000Hz and 150000000Hz for the main system (CPU) clock for this board.
  4. */
  5. #define BOARD_MAINCLOCKRATE                         (100000000)


 楼主| 春风的暖暖 发表于 2016-1-15 21:29 | 显示全部楼层
  1. Chip_SetupIrcClocking(BOARD_MAINCLOCKRATE);

所以这里的时钟是100M,关于对定时器的配置,也蛮简单的,不得不再次强调写NXP库的工程师团队水平了得,其实不单单是软件工程师的功劳,和硬件设计的时候也是息息相关的,这些是和寄存器设计有关的,不多说了。
  1. /**
  2. * [url=home.php?mod=space&uid=159083]@brief[/url]  TIMER1_Init
  3. * [url=home.php?mod=space&uid=536309]@NOTE[/url]   TIMER1初始化
  4. * @param  none
  5. * @retval none
  6. */
  7. void TIMER1_Init(void)
  8. {
  9.     /*
  10.      * 设置PR=100
  11.      * TIMER1时钟=PCLK(100M)/100 = 1M = 1000K
  12.      */
  13.     Chip_TIMER_Init(LPC_TIMER1);
  14.     Chip_TIMER_PrescaleSet(LPC_TIMER1, 100);
  15.     Chip_TIMER_Reset(LPC_TIMER1);
  16.     Chip_TIMER_MatchEnableInt(LPC_TIMER1, 1);
  17.     Chip_TIMER_SetMatch(LPC_TIMER1, 1, Chip_Clock_GetAsyncSyscon_ClockRate());
  18.     Chip_TIMER_ResetOnMatchEnable(LPC_TIMER1, 1);
  19.     Chip_TIMER_Disable(LPC_TIMER1);
  20.    
  21.     NVIC_ClearPendingIRQ(CT32B1_IRQn);
  22.     NVIC_EnableIRQ(CT32B1_IRQn);
  23.    
  24. }

配置如上,这里需要注意PR的理解和设置,这里初始化禁止了TIMER1,此处的TIMER1用于us的精确延时,因为6lowpan涉及的协议栈、RAIDO驱动都蛮在意这个us延时的。

这玩意很简单,不过得用心,NXP提供的文档和驱动包都能满足你,随便哪个外设都还是很方便就能用起来的。大家有关于通用定时器的问题可以在这个帖子中跟帖讨论,不写了,打算去继续搞一下,希望能移植结束。
mcu_solar 发表于 2016-1-18 15:41 | 显示全部楼层
用心!!!:victory::victory::victory:
Rooney30 发表于 2016-1-18 20:15 | 显示全部楼层
春风的暖暖 发表于 2016-1-15 21:29
所以这里的时钟是100M,关于对定时器的配置,也蛮简单的,不得不再次强调写NXP库的工程师团队水平了得,其 ...

这个定时器中断和外设IO中断有没有冲突?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

306

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部