金牌会员
- 积分
- 1646
- 威望
- 810
- 贡献
- 544
- 兑换币
- 306
- 注册时间
- 2011-12-25
- 在线时间
- 146 小时
|
如题,用野火的库进行函数操作,在测速时选用了野火例程上的那种方法:
lptmr_counter_init(LPT0_ALT2,INT_COUNT,2,LPT_Rising); //初始化脉冲计数器,用LPT0_ALT2,即PTC5输入,
//每隔INT_COUNT产生中断,延时2个时钟滤波,上升沿触发
我的INT_COUNT设定为10,在LPT中断中对jishu++,
然后再在PIT中断里读取jishu,并清零
定时时间设定的是5ms,读取结果还算准确,后来细想这种方法有点不妥,相当于每十个脉冲就要进一次LPT中断,这样会不会很耗费资源,既然LPT能计算出我要比较的那个INT_COUNT,那么可不可以让LPT直接计数,然后再在PIT中断中读取清零呢,今天细看了一下相关内容,没有找到很好的方法,在野火库里找到了这些:
#define LPTMR0_CSR LPTMR_CSR_REG(LPTMR0_BASE_PTR)
#define LPTMR0_PSR LPTMR_PSR_REG(LPTMR0_BASE_PTR)
#define LPTMR0_CMR LPTMR_CMR_REG(LPTMR0_BASE_PTR)
#define LPTMR0_CNR LPTMR_CNR_REG(LPTMR0_BASE_PTR)
#define LPTMR0_BASE_PTR ((LPTMR_MemMapPtr)0x40040000u)
我以为是K60将采集的脉冲数放到了内部地址0x40040000u中了,用J-link调试时发现确实有变化,却不稳定,看不太明白,我应该怎么将这个数读出呢。
之后在论坛里看到有人发了官方例程,他是将 a_cur=LPTMR0_CNR; 这样读出来的是不是脉冲数呢,求解各位指点小菜一下。
|
|