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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版