今天尝试用定时器的外部中断模式2 目的是想测一下外部输入信号的脉冲数 不知道哪里有问题 程序中测出的脉冲数要比实际的大了几个数量级。。。。各位老大帮忙看看
void TIM3_Init()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
TIM1->SMCR=0<<8;
TIM1->SMCR=0<<9;
TIM1->SMCR=0<<10;
TIM1->SMCR=0<<11;//外部触发滤波,设为不滤波
TIM1->SMCR=0<<12;
TIM1->SMCR=0<<13;//外部触发预分频,设置为不分频
TIM1->SMCR=0<<15;//外部触发极性设为高电平或上升沿有效
TIM1->SMCR=1<<14;//使能外部时钟模式2,计数器有ETRF信号上的任意有效边沿驱动
TIM1->CCMR1=0<<4;
TIM1->CCMR1=0<<5;
TIM1->CCMR1=0<<6;
TIM1->CCMR1=0<<7; //IC1F=0000,没有滤波
TIM1->CCMR1=0<<1;
TIM1->CCMR1=1<<0; //CC1S=01,CC1通道被配置为输入,IC1映射在TI1上
TIM1->CCER=0<<1; //CC1P=0确定极性(只检测上升沿)
TIM1->SMCR=1<<2;
TIM1->SMCR=1<<1;
TIM1->SMCR=0<<0; //SMS=110,配置定时器为触发模式
TIM1->SMCR=1<<6;
TIM1->SMCR=0<<5;
TIM1->SMCR=1<<4;//TS=101,选择TI1作为输入源
TIM1->CR1=1<<0;//使能计数器(启动计数器)
TIM1->CR1=0;//关闭计数器
}
主函数里用这个ClkCount读取计数值 测出来的值很大 老大给看看 我哪里有问题
ClkCount=TIM_GetCounter(TIM1);
ClkCountTemp=ClkCount;
TIM_SetCounter(TIM1, 0); |