你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32f103VE,TIM4输入捕获问题

[复制链接]
xde188 提问时间:2014-3-11 11:42 /
问题:使用TIM4输入捕获时,配置了输入捕获引脚为PB8,通道为IC3,为什么PB9引脚电平变化时能 进入捕获中断?
代码如下,请问什么地方搞错了。
        
 
int main(void)
{
 
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);                                                // 使能TIM模块
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
 
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;        //Pb8
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        //TIM通道的捕捉初始化   
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_3;//通道选择 
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;//下降沿 
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//管脚与寄存器对应关系 
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//分频器 
        TIM_ICInitStructure.TIM_ICFilter = 0x0;        //滤波设置,经历几个周期跳变认定波形稳定0x0~0xF 
        TIM_ICInit(TIM4, &TIM_ICInitStructure);        //初始化
       
        TIM_Cmd(TIM4, ENABLE);                         //启动TIM4
        TIM_ITConfig(TIM4, TIM_IT_CC3, ENABLE);        //打开中断       
 
        NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure); 
 
 
       while (1)
        {
       
 
        }
}
 
 
//TIM4捕获中断服务函数
void TIM4_IRQHandler( void )
{
 
   if(TIM_GetITStatus(TIM4, TIM_IT_CC3) == SET)
   {               
 
        TIM_ClearITPendingBit(TIM4, TIM_IT_CC3);
            if(CaptureNumber == 0)
            {
              //Get the Input Capture value
              IC4ReadValue1 = TIM_GetCapture3(TIM4);
              CaptureNumber = 1;
            }
            else if(CaptureNumber == 1)
            {
              //Get the Input Capture value 
              IC4ReadValue2 = TIM_GetCapture3(TIM4); 
              
              //Capture computation
              if (IC4ReadValue2 > IC4ReadValue1)
              {
                Capture = (IC4ReadValue2 - IC4ReadValue1); 
              }
              else
              {
                Capture = ((0xFFFF - IC4ReadValue1) + IC4ReadValue2); 
              }
              //Frequency computation 
              TIM4Freq = (uint32_t) SystemCoreClock / Capture;
              CaptureNumber = 0;
            }
  }
收藏 1 评论5 发布时间:2014-3-11 11:42

举报

5个回答
fengye5340 回答时间:2014-3-11 14:23:36

RE:STM32f103VE,TIM4输入捕获问题

PB8 PB9属于IC3 /IC4,它们是一组的,你在配置定时器的捕获时,需要配置触发源,设置从定时器。另外,看一下你的引脚线接错了吗?
xde188 回答时间:2014-3-11 16:25:09

回复:STM32f103VE,TIM4输入捕获问题

引脚我已经查过了,没有接错。同样的方法配置TIM3,CH3 CH4就没有这个问题,不解? 
xde188 回答时间:2014-3-13 14:15:18

回复:STM32f103VE,TIM4输入捕获问题

回复第 3 楼 于2014-03-11 16:25:09发表:
引脚我已经查过了,没有接错。同样的方法配置TIM3,CH3 CH4就没有这个问题,不解? 
我用普通输入捕获功能。

 
果果子 回答时间:2014-11-26 12:09:24
请问楼主,你的这个问题解决了吗?我也出现了此问题。
jinniuxing 回答时间:2020-11-3 10:56:34
谢谢分享!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版