微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于STM32 TIM3 CH1 外部脉冲计数的问题,谢谢

关于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);
再次感谢您

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top