打印
[Kinetis]

读书笔记/学习心得 4.飞思卡尔FRDM-KE02Z-PIT_demo

[复制链接]
2311|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天试了下ke02z的PIT_demo
是一个类似定时器中断的东西
先看例程,程序很简单,初始化PIT,配置,然后运行任务,
定义了这样一个量
PIT_Init(0, 0x1312D00);
关于初始化函数
void PIT_Init( unsigned char cChannel, unsigned int PitModulo )
{
        SIM_SCGC |= SIM_SCGC_PIT_MASK;
    if( cChannel == 0 )
    {  enable_irq(22) }
    else
    {  enable_irq(23); }
        PIT_MCR = 0x02;
        PIT_LDVAL_REG(PIT_BASE_PTR,cChannel) = PitModulo;
        PIT_TCTRL_REG(PIT_BASE_PTR,cChannel) =
                                                PIT_TCTRL_TEN_MASK
                                                |PIT_TCTRL_TIE_MASK
                                                ;
    PIT_MCR = 0x00;
}
解读下,先禁止,再配置通道,再配置时间,再初始化,再启动,这样一个过程。
看了数据手册,表示还是有点疑惑
PIT_LDVAL_REG(PIT_BASE_PTR,cChannel) = PitModulo;这句是定义中断时间吧
PIT_TCTRL_REG(PIT_BASE_PTR,cChannel) = PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK这句是先使能定时器再开启定时器吧
但是0x1312D00这个量具体是怎么求的呢,应该是定时多久的意思吧,转换成10进制是20000000
时钟频率是20M的话,周期是50ns,这样的话定时就是1s,是这样计算的吧
数据手册上有这样个公式LDVAL trigger = (period / clock period) -1,用于计算定时的值。

总结下这个定时器还是很简单易用的,准确度也不错,自己写了个时钟玩玩,还是挺准的。


顺便分享下自己的学习习惯吧,我是实战派··让我光看视频,看书什么的不动手,
那会是一点效率也没有,还是喜欢对着例程,读者坑爹的英文数据手册,慢慢理解,觉得这样才是最高效率:lol
也只喜欢这样搞,当然大家多交流也是很棒的

最后吐槽下CW····下来个10.5版的···用不来啊用不来,好麻烦啊,本来想偷懒用下PE试试,算了还是用我的keil算了



相关帖子

沙发
motodefy|  楼主 | 2013-11-3 08:27 | 只看该作者
自己顶一下

使用特权

评论回复
板凳
motodefy|  楼主 | 2013-11-4 09:58 | 只看该作者
都没人看没人回啊···求版主粗线告诉我算的对不对

使用特权

评论回复
地板
FSL_TICS_MAHUI| | 2013-11-4 12:13 | 只看该作者
支持一下楼主,这种分享是最受大家欢迎的。

PIT_LDVAL_REG(PIT_BASE_PTR,cChannel) = PitModulo;这句是定义中断时间吧
这句应该是加载设定计数器的目标值;
PIT_TCTRL_REG(PIT_BASE_PTR,cChannel) = PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK这句是先使能定时器再开启定时器吧
这句是开中断,并且使能计数器计数。

使用特权

评论回复
5
motodefy|  楼主 | 2013-11-4 12:44 | 只看该作者
FSL_TICS_MAHUI 发表于 2013-11-4 12:13
支持一下楼主,这种分享是最受大家欢迎的。

PIT_LDVAL_REG(PIT_BASE_PTR,cChannel) = PitModulo;这句是定 ...

恩···多谢解答啊··和我想的一样的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

475

帖子

3

粉丝