硬汉嵌入式论坛

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

[TIMER] STM32H750 时钟编码器调试发现一个奇怪问题

[复制链接]

3

主题

8

回帖

17

积分

新手上路

积分
17
发表于 2021-11-4 11:15:32 | 显示全部楼层 |阅读模式
最近一直在调试STM32H750V的板子,开了两路编码器,分别用了T4和T1,编码器计数正常,昨天进一步细测发现T1脉冲计数竟然只能在0-65535之间,不能更新,譬如从65535—>0或者0->65535.
T4定时器就没有这个问题。T1和T4配置相同,T1的编码器配置如下。看了数据手册,T1和T4差别是:T1是高级定时器,T4是通用计时器。难道这里有坑?大家有碰到这个问题吗?

        //设置定时器TIM1参数
        TIM1_Handler.Instance=TIM1;                          
    TIM1_Handler.Init.Prescaler=0;                     
    TIM1_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;   
    TIM1_Handler.Init.Period=65535;                        
    TIM1_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
               
        TIM1_Encoder_Handler.EncoderMode=TIM_ENCODERMODE_TI12;
        TIM1_Encoder_Handler.IC1Filter=0;
        TIM1_Encoder_Handler.IC1Polarity=TIM_ICPOLARITY_RISING;
        TIM1_Encoder_Handler.IC1Prescaler=TIM_ICPSC_DIV1;
        TIM1_Encoder_Handler.IC1Selection=TIM_ICSELECTION_DIRECTTI;
        TIM1_Encoder_Handler.IC2Filter=0;
        TIM1_Encoder_Handler.IC2Polarity=TIM_ICPOLARITY_RISING;
        TIM1_Encoder_Handler.IC2Selection=TIM_ICSELECTION_DIRECTTI;
        TIM1_Encoder_Handler.IC2Prescaler=TIM_ICPSC_DIV1;
        HAL_TIM_Encoder_Init(&TIM1_Handler,&TIM1_Encoder_Handler);
        HAL_TIM_Encoder_Start(&TIM1_Handler,TIM_CHANNEL_ALL);
       
        if(Channel[3].ValueDir)
                TIM1->CCER |= 0x02;
        else
                TIM1->CCER &= 0xfd;
       
        TIM1->CNT=0;
        __HAL_TIM_ENABLE(&TIM1_Handler);

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2021-11-4 13:00:29 | 显示全部楼层
没测过编码器功能。
回复

使用道具 举报

2

主题

51

回帖

57

积分

初级会员

积分
57
发表于 2021-11-6 15:29:21 | 显示全部楼层
Tim1和Tim4都是16位计数器,按理来说应该都是0~65535吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 02:12 , Processed in 0.149731 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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