小学生
最后登录1970-1-1
在线时间 小时
注册时间2021-10-8
|
菜鸟询问,请各位大哥帮忙解答一下,跪谢
1、功能:使用TIM3的外部时钟模式2对外部脉冲进行采集计数,输入管脚为PD2。/ 时钟分频为1MHZ,外部采用信号发生器产生10KHZ脉冲,每隔1秒打印一次脉冲个数。
2、问题:按理来说每隔1秒脉冲个数增加10k,但是实际是280,差的太大了....
3、代码:
//时钟配置部分
void TIM_Extern_Config()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
EXTERN_TIM_APBxClock_FUN(EXTERN_TIM_CLK,ENABLE);
TIM_DeInit(EXTERN_TIM);
// 自动重装载寄存器的值,累计TIM_Period+1个频率后产生一个更新或者中断
TIM_TimeBaseStructure.TIM_Period=EXTERN_TIM_PERIOD;
// 驱动CNT计数器的时钟 = Fck_int/(psc+1)
TIM_TimeBaseStructure.TIM_Prescaler= EXTERN_TIM_PSC;
// 时钟分频因子 ,配置死区时间时需要用到
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //////////////////////////////////2021.09.30
// 计数器计数模式,设置为向上计数
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
// 重复计数器的值,没用到不用管
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
// 初始化定时器
TIM_TimeBaseInit(EXTERN_TIM, &TIM_TimeBaseStructure);
TIM_ClearITPendingBit(EXTERN_TIM,TIM_IT_Update);//清除溢出中断标志位
TIM_ITConfig(EXTERN_TIM,TIM_IT_Update,ENABLE );//使能定时器更新中断
TIM_ITRxExternalClockConfig(EXTERN_TIM,TIM_TS_ETRF); //配置外部触发,否则不会计数
TIM_ETRClockMode2Config(EXTERN_TIM, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0x00); ///////2021.09.30
TIM_SetCounter(EXTERN_TIM,0);//计数器清零
TIM_Cmd(EXTERN_TIM, ENABLE);//使能TIMx外设
TIM_Extern_NVIC_Config();
}
//部分头文件
#define EXTERN_TIM TIM3
#define EXTERN_TIM_APBxClock_FUN RCC_APB1PeriphClockCmd
#define EXTERN_TIM_CLK RCC_APB1Periph_TIM3
#define EXTERN_TIM_PERIOD 0XFFFF
#define EXTERN_TIM_PSC (72-1)
|
|