小弟,最近正在学习LPC1768,现在学到了定时器,计数器这块,想用定时器0计时,定时器1做计数器,测试外部脉冲的频率,我设定的是P1.19脚为脉冲捕获输入口,部分代码如下:
static counter_init(void) // 计数器1初始化
{
SC->PCONP |= (1<<1)|(1<< 2)|(1<<6); // 配置外设功率寄存器,timer0,timer1,pwm1使能
TIM1->CTCR = 0x00000006; // 下降沿计数,选择CAP1.1
TIM1->TC = 0; // 初始计数值位0
TIM1->CCR = 0; //
TIM1->IR = 0xff; // reset all interrrupts
TIM1->TCR = 0x00; // 关闭计数器
GPIO1->FIODIR &= (~(1<<19)); // P1.19做为输入引脚
PINCON->PINSEL3 |= (3<<6); // P1.19引脚设置为CAP1.1(捕获输入)
}
static timer0_init(void) // 定时器0 初始化
{
timer0_counter = 0;
TIM0 -> MR0 = TIME_INTERVAL; // 定时10ms
TIM0 -> MCR = 3; /* Interrupt and Reset on MR0 */
NVIC_EnableIRQ(TIMER0_IRQn); // 开启定时器0定时中断
osc_clk_cnt = 0;
TIM0 -> TCR = 1; // 启动定时器0
TIM1 -> TCR = 1; // 启动计数器1
}
void TIMER0_IRQHandler (void)
{
TIM0 -> IR = 1; /* clear interrupt flag */
timer0_cnt++;
if(timer0_cnt == 100){
TIM0->TCR = 0; // 关闭定时器
TIM1->TCR = 0; // 关闭计数器
osc_clk_cnt = TIM1->TC; // 提取计数值
timer0_cnt = 0;
}
}
我用串口打印出读出的计数值,发现计数器是计的内部时钟(PCLK)的脉冲,没有计数引脚的脉冲,一直没弄明白是为什么,请大侠来点拨一下,小弟不盛感激! |