硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7209|回复: 3
收起左侧

[有问必答] TIM2 ETR计数一直是0,谁帮忙看下代码?

[复制链接]

41

主题

97

回帖

220

积分

高级会员

积分
220
发表于 2014-10-27 16:14:43 | 显示全部楼层 |阅读模式
stm32F407   用的TIM的ETR功能,引脚是PA15,TIM2 ETR计数一直是0,不知哪里配置错了?


void TIM2_ETR_Config(void)//0.5s  TIM2 32bit   42MHz
{
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
       // TIMER4 CLK = 18M MHz
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
        /* GPIOE clock enable */
       // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN;//GPIO_Mode_IN_FLOATING;  //GPIO_Mode_IPU ;
       //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  // 设为推挽模式 //
       GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_UP;//GPIO_PuPd_UP;// GPIO_PuPd_NOPULL; // 无需上下拉电阻 //
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource15, GPIO_AF_TIM2);//GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_TIM2);

       TIM_DeInit(TIM2);
       TIM_TimeBaseStructure.TIM_Period =0xFFFF;//当计数器从0记到FFF为一个周期,自动装载寄存器ARR中的值
       TIM_TimeBaseStructure.TIM_Prescaler = 0X00; //
       TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;//设置时钟系数 不分频
       TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
       TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); // Time base configuration


       TIM_ITRxExternalClockConfig(TIM2,TIM_TS_ETRF); //配置外部触发,否则不会计数
//TIM_ExtTRGPolarity设置TIMx外部触发极性。
  //TIM_ExtTRGPolarity_Inverted:TIM外部触发极性翻转:低电平或下降沿有效
  //TIM_ExtTRGPolarity_NonInverted:TIM外部触发极性非翻转:高电平或上升沿有效
   
       TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);//配置外部时钟模式2TIM_ExtTRGPolarity_NonInverted
     
       TIM_SetCounter(TIM2, 0);  //设置计数器为0
       TIM_Cmd(TIM2, ENABLE);//Enables or disables the specified TIM peripheral.  
}

void TIM3_IRQHandler(void)   
{
   CPU_SR_ALLOC();

   CPU_CRITICAL_ENTER();  
   OSIntNestingCtr++;
   CPU_CRITICAL_EXIT();
        //if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET )
        //{
               // counter_capture = TIM4->CNT;
                //TIM4->CNT = 0;
               //counter_capture=TIM_GetCapture1(TIM2); //输入捕获值
            //counter_val=TIM_GetCounter(TIM2);
     
     
                //TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);        
        //}
    /* 在os_core.c文件里定义,如果有更高优先级的任务就绪了,则执行一次任务切换 */
      

        if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
        {
               
                Frequency_value = TIM_GetCounter(TIM2)*2;//单位khz
              //  TIM_SetCounter(TIM2, 0);  
           TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
     
        }
  OSIntExit();   
   
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2014-10-27 16:46:29 | 显示全部楼层
这个不懂啊,帮顶。
回复

使用道具 举报

41

主题

97

回帖

220

积分

高级会员

积分
220
 楼主| 发表于 2014-10-28 17:20:22 | 显示全部楼层
ok 了
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
发表于 2023-5-12 09:05:37 | 显示全部楼层

最后是怎么解决的呀
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 22:13 , Processed in 0.168324 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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