搜索
查看: 10586|回复: 5

[已解决] STM32f103VE,TIM4输入捕获问题

[复制链接]

该用户从未签到

1

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-3-11 11:42:39 | 显示全部楼层 |阅读模式
问题:使用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;
            }
  }
回复

使用道具 举报

该用户从未签到

21

主题

479

帖子

0

蝴蝶豆

金牌会员

最后登录
2022-3-21
发表于 2014-3-11 14:23:36 | 显示全部楼层

RE:STM32f103VE,TIM4输入捕获问题

PB8 PB9属于IC3 /IC4,它们是一组的,你在配置定时器的捕获时,需要配置触发源,设置从定时器。另外,看一下你的引脚线接错了吗?
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2014-3-11 16:25:09 | 显示全部楼层

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

引脚我已经查过了,没有接错。同样的方法配置TIM3,CH3 CH4就没有这个问题,不解? 
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2014-3-13 14:15:18 | 显示全部楼层

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

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

 
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
2014-11-26
发表于 2014-11-26 12:09:24 | 显示全部楼层
请问楼主,你的这个问题解决了吗?我也出现了此问题。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

23

帖子

0

蝴蝶豆

高级会员

最后登录
2022-12-15
发表于 2020-11-3 10:56:34 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-28 19:33 , Processed in 0.161996 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表