OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3059|回复: 3

STMF103ZET6编码器模式TI12计数值最后一直为0啊各位大佬帮忙解决下下啊!!!!!!!!!!

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-11-10
在线时间
3 小时
发表于 2018-11-10 18:57:59 | 显示全部楼层 |阅读模式
3金钱
/************配置编码器模式**********、
void Encoder_Init_TIM2(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  
        TIM_ICInitTypeDef TIM_ICInitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;

        GPIO_AFIODeInit();
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //??JTAG??,?PB3,PB4????IO???  

        GPIO_PinRemapConfig(GPIO_FullRemap_TIM2,ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;        //????
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING; //????
        GPIO_Init(GPIOA, &GPIO_InitStructure);                                //?????????GPIOA

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;        //????
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //????
        GPIO_Init(GPIOB, &GPIO_InitStructure);                                //?????????GPIOB

        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
        TIM_TimeBaseStructure.TIM_Prescaler = 0x0; // ????
        TIM_TimeBaseStructure.TIM_Period = ENCODER_TIM_PERIOD; //??????????
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//??????:???
        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);

        TIM_ICStructInit(&TIM_ICInitStructure);
        TIM_ICInitStructure.TIM_ICFilter = 10;
        TIM_ICInit(TIM2, &TIM_ICInitStructure);//??TIM_ICInitStruct???????????TIM
        TIM_ClearFlag(TIM2, TIM_FLAG_Update);//??TIM??????
        TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //?????????TIM??

        TIM_SetCounter(TIM2,0);
                                TIM2 -> CNT=0;
        TIM_Cmd(TIM2, ENABLE);   //??????TIMx??
}

void TIM2_IRQHandler(void)
{                   
               
         if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //¼ì2éÖ¸¶¨μÄTIMÖD¶Ï·¢éúóë·ñ:TIM ÖD¶ÏÔ′
                {
       
                       
                }
         TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //Çå3yTIMxμÄÖD¶Ï′y′|àíλ:TIM ÖD¶ÏÔ′
}

/*************用于定时输出计数值***************/
void TIM3_Int_Init(u16 arr,u16 psc)
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //????

        TIM_TimeBaseStructure.TIM_Period = arr; //????????       
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //????  
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //??????:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM??????
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //??????????TIMx

        TIM_ITConfig(  TIM3,TIM_IT_Update  |  TIM_IT_Trigger,  ENABLE  );//??????TIM??

        //??????
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3??
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //?????0?
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //????3?
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?????
        NVIC_Init(&NVIC_InitStructure);  //??NVIC_InitStruct???????????NVIC???

        TIM_Cmd(TIM3, ENABLE);  //??TIMx??
                                                         
}

void TIM3_IRQHandler(void)   //TIM3??
{
        if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //?????TIM??????:TIM ???
                {
                       
                bmq_nmb=(short)TIM2 -> CNT;
                TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //??TIMx???????:TIM ???
               
                }
}

最后在显示bmq_nmb的值

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-11-10
在线时间
3 小时
 楼主| 发表于 2018-11-10 18:58:00 | 显示全部楼层
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-11-11 17:04:20 | 显示全部楼层
帮顶!!
回复

使用道具 举报

15

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2018-11-1
在线时间
19 小时
发表于 2018-12-17 16:04:34 | 显示全部楼层

啥意思? 咋开中断
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 01:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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