金牌会员
- 积分
- 1240
- 威望
- 566
- 贡献
- 288
- 兑换币
- 335
- 注册时间
- 2013-8-4
- 在线时间
- 193 小时
- 毕业学校
- 桂林理工大学
|
我用的是野火的库,
void main(void)
{
uint16 count;
DisableInterrupts; //禁止总中断
FTM_PWM_init(FTM1,CH0,300,50);
lptmr_counter_init(LPT0_ALT1, INT_COUNT, 2, LPT_Rising); //初始化脉冲计数器,用LPT0_ALT2,即PTA19输入,每隔INT_COUNT产生中断,延时2个时钟滤波,上升沿触发
pit_init_ms(PIT0,1000);
EnableInterrupts;
while(1)
{
if(pit_flag > 0)
{
printf("CNR=%d ",LPTMR0_CNR); //这里读到的都是 0 ,为什么???
count = LPTMR0_CNR; //保存脉冲计数器计算值, LPTMR0_CNR是计数寄存器
printf("count=%d\n",count);
lptmr_counter_clean(); //清空脉冲计数器计算值(马上清空,这样才能保证计数值准确)
printf("LPT_INT_count=%d, INT_COUNT=%d, count=%d\n",LPT_INT_count,INT_COUNT,count);
printf("1秒钟LPT读取脉冲:%d个\n", LPT_INT_count * INT_COUNT + count); //打印计数值
LPT_INT_count = 0; //清空LPT中断次数
pit_flag = 0;
}
}
}
下面是中断程序
void LPT_Handler(void)
{
LPTMR0_CSR |= LPTMR_CSR_TCF_MASK; //清除LPTMR比较标志
LPT_INT_count++; //中断溢出加1
}
void PIT0_IRQHandler()
{
pit_flag = 1; //标记进入PIT中断
PIT_Flag_Clear(PIT0); //清中断标志位
}
为什么每次读取LPTMR0_CNR计数寄存器的值都是0?
求大神指导!~ |
|