OpenEdv-开源电子网

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

STM32F407开发板TIM8定时器怎么用

[复制链接]

0

主题

0

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-5-5
在线时间
8 小时
发表于 2017-4-21 21:09:10 | 显示全部楼层 |阅读模式
1金钱
TIM8定时器用于编码器模式,每次进入中断就出不来了,为什么啊???


void  TIM8_UP_TIM13_IRQnHandler (void)
{                     

   if(TIM_GetITStatus(TIM8, TIM_IT_Update) != RESET)   //(ÕaêÇê2Ã′òa˼)
   {

        if(TIM8->CNT <=2048)   //·à&#214;1±à&#194;&#235;&#198;÷&#184;úD&#194;1y&#191;ì£&#172;′&#239;μ&#189;0ò&#212;é&#207;
                turns++;
        else
        turns--;
         }
        TIM_ClearITPendingBit(TIM8, TIM_IT_Update); //&#199;&#229;3y&#214;D&#182;&#207;±ê&#214;&#190;&#206;&#187;
}

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

使用道具 举报

35

主题

193

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
476
金钱
476
注册时间
2015-12-27
在线时间
116 小时
发表于 2017-4-21 23:51:18 | 显示全部楼层
你应该是别的部分有问题,还有就是你这个turns是不是当减到0的时候再增加啊?
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-5-5
在线时间
8 小时
 楼主| 发表于 2017-4-25 11:12:47 | 显示全部楼层
q546163199 发表于 2017-4-21 23:51
你应该是别的部分有问题,还有就是你这个turns是不是当减到0的时候再增加啊?

void Encoder_Init(void)    //TIM8  PC6,PC7
{
  GPIO_InitTypeDef         GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_ICInitTypeDef        TIM_ICInitStructure;
        NVIC_InitTypeDef         NVIC_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8,ENABLE);//&#191;a&#198;&#244;TIM3ê±&#214;ó
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);//&#191;a&#198;&#244;GPIOCμ&#196;ê±&#214;ó
       
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_TIM8);//&#191;a&#198;&#244;GPIOC6μ&#196;TIM3ê±&#214;óòy&#189;&#197;
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_TIM8);//&#191;a&#198;&#244;GPIOC7μ&#196;TIM3ê±&#214;óòy&#189;&#197;
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; //GPIOC6,GPIOC7
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//&#197;&#228;&#214;&#195;&#182;&#203;&#191;úê&#228;3&#246;ààDí 0 ê&#228;3&#246;í&#198;í죨&#184;′&#206;&#187;×′ì&#172;£&#169;  1ê&#228;3&#246;&#191;a&#194;&#169;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP ;//&#197;&#228;&#214;&#195;&#182;&#203;&#191;úé&#207;à-&#207;&#194;à-μ&#196;&#188;&#196;′&#230;&#198;÷£&#172;00&#206;Té&#207;à-&#207;&#194;à-£&#172;01é&#207;à-£&#172;10 &#207;&#194;à- 11±£á&#244;
        GPIO_Init(GPIOC,&GPIO_InitStructure); //3&#245;ê&#188;&#187;ˉPC6  PC7

       
  TIM_TimeBaseStructure.TIM_Period = 4095; //éè&#214;&#195;&#212;ú&#207;&#194;ò&#187;&#184;&#246;&#184;üD&#194;ê&#194;&#188;t×°è&#235;&#187;&#238;&#182;ˉμ&#196;×&#212;&#182;ˉ&#214;&#216;×°&#212;&#216;&#188;&#196;′&#230;&#198;÷&#214;ü&#198;úμ&#196;&#214;μ
        TIM_TimeBaseStructure.TIM_Prescaler = 0; //éè&#214;&#195;ó&#195;à′×÷&#206;aTIMxê±&#214;ó&#198;μ&#194;ê3yêyμ&#196;&#212;¤·&#214;&#198;μ&#214;μ  2&#187;·&#214;&#198;μ
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //éè&#214;&#195;ê±&#214;ó·&#214;&#184;&#238;:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM&#207;òé&#207;&#188;&#198;êy&#196;£ê&#189;
        TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
        TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
       
        //éè&#214;&#195;&#182;¨ê±&#198;÷3&#206;a±à&#194;&#235;&#198;÷&#196;£ê&#189;  IT1 IT2&#206;aé&#207;éy&#209;&#216;&#188;&#198;êy
        TIM_EncoderInterfaceConfig(TIM8, TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);
        TIM_ICStructInit(&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_ICFilter = 6;  //ê&#228;è&#235;&#194;&#203;2¨&#198;÷
  TIM_ICInit(TIM8, &TIM_ICInitStructure);
       
  TIM_ClearFlag(TIM8, TIM_FLAG_Update);  //&#199;&#229;3y&#203;ùóD±ê&#214;&#190;&#206;&#187;
  TIM_ITConfig(TIM8, TIM_IT_Update, ENABLE); //&#212;êDí&#214;D&#182;&#207;&#184;üD&#194;
  TIM8->CNT =0;
        TIM_Cmd(TIM8, ENABLE);  //ê1&#196;üTIM3
       
        NVIC_InitStructure.NVIC_IRQChannel =  TIM8_UP_TIM13_IRQn  ;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//&#199;à&#213;&#188;ó&#197;&#207;è&#188;&#182;3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;                //×óó&#197;&#207;è&#188;&#182;0
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQí¨μàê1&#196;ü
        NVIC_Init(&NVIC_InitStructure);        //&#184;ù&#190;Y&#214;&#184;&#182;¨μ&#196;2&#206;êy3&#245;ê&#188;&#187;ˉVIC&#188;&#196;′&#230;&#198;÷
}
这是我的定时器初始化,求指导
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-5-5
在线时间
8 小时
 楼主| 发表于 2017-4-25 11:13:45 | 显示全部楼层
q546163199 发表于 2017-4-21 23:51
你应该是别的部分有问题,还有就是你这个turns是不是当减到0的时候再增加啊?

不是,就是进入中断要么加一要么减一
回复

使用道具 举报

10

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-3-2
在线时间
51 小时
发表于 2017-5-11 19:16:45 来自手机 | 显示全部楼层
加1和减1没有个范围应该死在中断里面吧
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 03:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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