打印
[其他ST产品]

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

[复制链接]
255|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycamelaaa|  楼主 | 2023-11-9 10:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
型号为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作为普通定时器用则正常, 求帮忙找下原因啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

746

主题

3743

帖子

0

粉丝