智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2143|回复: 5
打印 上一主题 下一主题

lmptr脉冲计数,怎么上线是100啊,怎么改啊?求大神讲解啊~

[复制链接]

2

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
威望
151
贡献
84
兑换币
84
注册时间
2013-9-14
在线时间
21 小时
毕业学校
辽宁工程技术大学
跳转到指定楼层
1#
发表于 2014-4-19 20:02:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void lptmr_counter_init(LPT0_ALTn altn, u16 count, u8 PrescaleValue, LPT_CFG cfg)
{

    if(PrescaleValue > 0x0f)PrescaleValue = 0x0f;

    //设置输入管脚
    if(altn == LPT0_ALT1)
    {
        SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;  //打开 PORTA 时钟
        PORTA_PCR19 = PORT_PCR_MUX(0x6);    //在PTA19上使用 ALT6
    }
    else if(altn == LPT0_ALT2)
    {
        SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;  //使能 PORTC 时钟
        PORTC_PCR5 = PORT_PCR_MUX(0x4);     //在PTC5上使用 ALT4
    }
    else                                    //不可能发生事件
    {
        assert_failed(__FILE__, __LINE__);  //设置管脚有误?
    }

    /* 开启模块时钟 */
    SIM_SCGC5 |= SIM_SCGC5_LPTIMER_MASK;    //使能LPT模块时钟

    /* 清状态寄存器 */
    LPTMR0_CSR = 0x00;                      //先关了LPT,这样才能设置时钟分频等

    /* 设置累加计数值  */
    LPTMR_CMR_REG(LPTMR0_BASE_PTR)  =   LPTMR_CMR_COMPARE(count);                       //设置比较值

    /* 时钟选择 */
    LPTMR_PSR_REG(LPTMR0_BASE_PTR)  =   LPTMR_PSR_PCS(0x1) | LPTMR_PSR_PBYP_MASK  |  LPTMR_PSR_PRESCALE(PrescaleValue);        //使用 LPO clock 且 bypass glitch filter
    //                                                        开启和配置脉冲滤波器:2^n个时钟上升沿才识别

    /* 管脚设置、使能中断  */
    LPTMR_CSR_REG(LPTMR0_BASE_PTR)  =   LPTMR_CSR_TPS(altn) | LPTMR_CSR_TMS_MASK  | ( cfg == LPT_Falling ?  LPTMR_CSR_TPP_MASK :   0  )  | LPTMR_CSR_TEN_MASK  | LPTMR_CSR_TIE_MASK  ;
    //                                       选择输入管脚        选择脉冲计数                                   下降沿       上升沿           使能LPT
    // TFC = 0,即计数值等于比较值时,计数值复位

    enable_irq(LPTMR_irq);                        //开引脚的IRQ中断
}
回复

使用道具 举报

18

主题

376

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4243
QQ
威望
2044
贡献
1199
兑换币
1205
注册时间
2012-9-27
在线时间
500 小时
2#
发表于 2014-4-20 02:57:00 | 只看该作者
调用的时候count位置改成别的数,lptmr_counter_init(LPT0_ALT1,1000,2,LPT_Rising); 这个上限1000
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
26
威望
24
贡献
2
兑换币
3
注册时间
2014-4-20
在线时间
0 小时
毕业学校
。。。
3#
发表于 2014-4-20 08:27:15 | 只看该作者
。。。
回复 支持 反对

使用道具 举报

38

主题

446

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6478
威望
4794
贡献
648
兑换币
1264
注册时间
2014-3-19
在线时间
518 小时
4#
发表于 2014-4-29 21:04:32 | 只看该作者
黯伤人 发表于 2014-4-20 02:57
调用的时候count位置改成别的数,lptmr_counter_init(LPT0_ALT1,1000,2,LPT_Rising); 这个上限1000

请教一下   怎么读取  技术器里的值呢?   谢谢啦
回复 支持 反对

使用道具 举报

18

主题

376

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4243
QQ
威望
2044
贡献
1199
兑换币
1205
注册时间
2012-9-27
在线时间
500 小时
5#
发表于 2014-4-29 23:22:49 | 只看该作者
直接将LPTMR0_CNR赋给变量,然后清零
回复 支持 反对

使用道具 举报

13

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
259
贡献
127
兑换币
140
注册时间
2015-8-12
在线时间
38 小时
毕业学校
滁大
6#
发表于 2016-3-1 13:13:32 | 只看该作者
把你的countde值改掉就可以了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 20:28 , Processed in 0.052855 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表