你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103 中的TIM5 來無法讀取到編碼器counter值

[复制链接]
sappppp 提问时间:2016-2-1 15:28 /
請問各位先進,我用STM32F103中的TIM5 CH1(PA0) ,CH2(PA1)來讀取編碼器的counter值,進而得知其編碼器轉的角度,可是我的程式卻讀到的counter值永遠是0,並且無法進入TIM5 IRQ中斷,所以想要請問我程式哪裡出錯呢!謝謝!程式如下
void ENC_Init(void)
{
    #define ENCODER_TIMER   TIM5

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_ICInitTypeDef TIM_ICInitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   
    GPIO_StructInit(&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 ;   
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = TIMx_PRE_EMPTION_PRIORITY;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = TIMx_SUB_PRIORITY;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    TIM_DeInit(ENCODER_TIMER);
    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
    TIM_TimeBaseStructure.TIM_Prescaler = 0x0;
    TIM_TimeBaseStructure.TIM_Period = 65535; // 0201 (4*ENCODER_PPR)-1;
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(ENCODER_TIMER, &TIM_TimeBaseStructure);
    TIM_EncoderInterfaceConfig(ENCODER_TIMER, TIM_EncoderMode_TI12,TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);       
    TIM_ICStructInit(&TIM_ICInitStructure);
    TIM_ICInitStructure.TIM_ICFilter = ICx_FILTER;
    TIM_ICInit(ENCODER_TIMER, &TIM_ICInitStructure);
    TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);
    TIM_ITConfig(ENCODER_TIMER, TIM_IT_Update, ENABLE);   
    TIM5->CNT = COUNTER_RESET;
    TIM_Cmd(ENCODER_TIMER, ENABLE);
}


void TIM5_IRQHandler(void)
{
        int16_t encoder_num;

    if (TIM_GetITStatus(TIM5,TIM_IT_Update) != RESET)
    {
       encoder_num=TIM_GetCounter(TIM5);  
    }
       TIM_ClearITPendingBit(TIM5,TIM_IT_Update);  
}

收藏 评论1 发布时间:2016-2-1 15:28

举报

1个回答
xmshao 回答时间:2016-2-2 09:52:25
芯片完整型号是多少?

能用示波器在输入口看到脉冲了吗?

你的配置不妨参考下附件手册。

STM32_正交编码接口笔记.pdf

下载

372.55 KB, 下载次数: 18, 下载积分: ST金币 -1

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版