OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3750|回复: 2

STM32F205 TIM8问题求助

[复制链接]

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2014-8-14
在线时间
19 小时
发表于 2015-4-16 08:45:30 | 显示全部楼层 |阅读模式
5金钱
请教,STM32F205,使用TIM8用做脉冲宽度采集,如下程序,问题:我在中断里面,溢出中断只会进入一次(Tim2OverFlow = 1 )请问什么地方需要修改
我用脉冲宽度为5HZ输入


init()//初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
 
TIM_DeInit( TIM8 );

  GPIO_InitStructure.GPIO_Pin = PIN_MCU_SPEED;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init( GPIOC, &GPIO_InitStructure ); 
GPIO_PinAFConfig( GPIOC, GPIO_PinSource9, GPIO_AF_TIM8 );

RCC_APB2PeriphClockCmd( RCC_APB2Periph_TIM8, ENABLE );

TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler = 2; //120M / ( 2 + 1 )
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit( TIM8, &TIM_TimeBaseStructure );
TIM_ARRPreloadConfig( TIM8, ENABLE );

TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
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;
  TIM_ICInit( TIM8, &TIM_ICInitStructure );

NVIC_InitStructure.NVIC_IRQChannel = TIM8_CC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init( &NVIC_InitStructure );

TIM_ClearITPendingBit( TIM8, TIM_IT_Update | TIM_IT_CC4 ); 
TIM_SetCounter( TIM8, 0 );
TIM_ITConfig( TIM8, TIM_IT_Update | TIM_IT_CC4, ENABLE );
TIM_Cmd( TIM8, ENABLE );
}
void TIM8_CC_IRQHandler( void )
{

if( TIM_GetITStatus( TIM8, TIM_IT_Update ) != RESET ) {
TIM_ClearITPendingBit( TIM8, TIM_IT_Update  );                
Tim2OverFlow++;
GPIOD->ODR ^= PIN_DEBUG_LED2;
}

if( TIM_GetITStatus( TIM8, TIM_IT_CC4 ) != RESET ) {
TIM_ClearITPendingBit( TIM8, TIM_IT_CC4 );

GPIOD->ODR ^= PIN_DEBUG_LED1;

PulseWidth =  TIM_GetCapture4( TIM8 );
PulseWidth += 65536*Tim2OverFlow;
}
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2014-8-14
在线时间
19 小时
 楼主| 发表于 2015-4-16 10:38:04 | 显示全部楼层
请高手帮忙看下
我发现TIM_IT_Update | TIM_IT_CC4 这两个中断是一起进的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-16 23:04:29 | 显示全部楼层
帮顶。。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 12:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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