[Kinetis] kl02 us级的精确延时函数

[复制链接]
1827|6
 楼主| ysszhk 发表于 2014-12-24 15:13 | 显示全部楼层 |阅读模式
我自己写了一个us级的延时函数,不知道对不对?请大家帮我看看。
void delay(int N)
{
        int i;
        //MCGFLLCLK as clock
        SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1);
        //open TPM0 clock gate control
        SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK;
                //set count value
        i=48*N;//48  about 1us
        TPM0_MOD = i;
        //TPM counter increments on every TPM counter clock
        TPM0_SC = TPM_SC_TOIE_MASK | TPM_SC_CMOD(1) ;
        while(!(TPM0_SC&TPM_SC_TOF_MASK));
        TPM0_SC |= TPM_SC_TOF_MASK;
        TPM0_SC &= ~TPM_SC_TOIE_MASK;       
}
 楼主| ysszhk 发表于 2014-12-24 15:14 | 显示全部楼层
外部晶振32.768K,fll因子1464.
FSL_TICS_Robin 发表于 2014-12-24 15:18 | 显示全部楼层
楼主你好
实际是否准确还得通过测试才能知道呢
 楼主| ysszhk 发表于 2014-12-24 18:40 | 显示全部楼层
就是想看看各位大神觉得我这个写的有没有问题啊。。
FSL_TICS_Robin 发表于 2014-12-25 15:07 | 显示全部楼层
楼主你好
如果你只是需要一个软件定时器而不需要操作外部引脚,那么PIT也可以实现此功能。
TPM模块更适合做PWM输出、输入捕捉等功能。
 楼主| ysszhk 发表于 2014-12-27 12:37 | 显示全部楼层
FSL_TICS_Robin 发表于 2014-12-25 15:07
楼主你好
如果你只是需要一个软件定时器而不需要操作外部引脚,那么PIT也可以实现此功能。
TPM模块更适合做 ...

嗯,这个us定时还是很准的,我用示波器量是很准的。
elecintop 发表于 2014-12-28 17:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

79

帖子

0

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