定时器2的寄存器值全为0

2019-07-14 13:21发布

型号为103系列,将PA0和PA1作为编码器的两个输入通道(定时器通道1和通道2), 配置代码如下:

    GPIO_InitTypeDef             GPIO_InitStructure;
    tiM_TimeBaseInitTypeDef      TIM_TimeBaseStructure;
    TIM_ICInitTypeDef             TIM_ICInitStructure;  
    NVIC_InitTypeDef              NVIC_InitStructure;     

    RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);    //使能TIM2时钟
    /* Enable GPIOA, clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    //使能GPIOA时钟
   
    GPIO_StructInit(&GPIO_InitStructure);//将GPIO_InitStruct中的参数按缺省值输入
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0 | GPIO_Pin_1;     
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);                           

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
   
    TIM_DeInit(TIM2);
    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
    TIM_TimeBaseStructure.TIM_Period = 360 * 4 -1;  //设定计数器重装值
    TIM_TimeBaseStructure.TIM_Prescaler = 0;         //TIM2时钟预分频值
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;//设置时钟分割 T_dts = T_ck_int   
    TIM_TimeBaseStructure.TIM_CounterMode   = TIM_CounterMode_Up; //TIM向上计数
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);              

   
    TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12, TIM_ICPolarity_BothEdge ,TIM_ICPolarity_BothEdge);//使用编码器模式3,上升下降都计数
    TIM_ICStructInit(&TIM_ICInitStructure);        //将结构体中的内容缺省输入

    TIM_ICInitStructure.TIM_ICFilter = 6;          //选择输入比较滤波器
    TIM_ICInit(TIM2, &TIM_ICInitStructure);        //将TIM_ICInitStructure中的指定参数初始化TIM2
   
    TIM_ClearFlag(TIM2, TIM_FLAG_Update);        //清除TIM2的更新标志位
    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);    //运行更新中断
    //Reset counter
    TIM2->CNT = 0;

    TIM_Cmd(TIM2, ENABLE);   //启动TIM2定时器


结果是定时器2的寄存器值全为0,  定时器2也无法开启,  单独将定时器2作为普通定时器用则正常, 求帮忙找下原因啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
csw_ying
1楼-- · 2019-07-15 12:15
用CUBEMX设置生成一下,和这个进行对比
jiaolesu
2楼-- · 2019-07-15 15:51
上示波器看波形先
60user58
3楼-- · 2019-07-15 19:16
 精彩回答 2  元偷偷看……
wenxueshu
4楼-- · 2019-07-16 00:35
先看看编码器的输入脉冲是否正常
jerry181855
5楼-- · 2019-07-16 05:33
顶一下
naiztycheng
6楼-- · 2019-07-16 09:49
我用cube试过,没有问题。没详细看寄存器的配置。

一周热门 更多>