关于STM32 TIM3 CH1 外部脉冲计数的问题,谢谢
时间:10-02
整理:3721RD
点击:
外部脉冲从TIM3 CH1(PB4)输入。
程序:
1、管脚及时钟初始化
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
GPIO_Init(GPIOB, &GPIO_InitStructure);
2、TIM3配置
TIM_DeInit(TIM3);
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler =0 ;
TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_div1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit( TIM3, &TIM_TimeBaseStructure); // Time base configuration
TIM_TIxExternalClockConfig(TIM3,TIM_TS_TI1FP1,TIM_ICPolarity_Rising,0);
TIM_SetCounter(TIM3, 0); // 清零计数器CNT
TIM_Cmd(TIM3,ENABLE);
3、定时去读取TIM3 CNT的数值
tmp=TIM_GetCounter(TIM3);
问题:使用外部信号发生器给PB4方波信号,但是读取TIM3 CNT时一直都是0。外部信号确认没有问题了,已经用示波器看了。不知程序上哪里出问题?还请大家帮忙看看,谢谢。难道TIM3 CH1不能作为外部脉冲计数?
没作过计时器输入计数,不过你的PB4引脚设置应该设置为内部上拉输入吧,不应该设置为浮空输入,除非有外部上拉。
个人意见。
谢谢您。刚才试着改为了GPIO_Mode_IPU ,也还是不行。
你用的stm32是什么型号,要看手册说明,stm32f103系列的PB4需要重新映射才能是TIM3_CH1的功能。
谢谢您,问题就是没有映射,在管脚初始化那里添加了以下语句就行了:
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
再次感谢您