打印
[N32G03x]

N32G032单霍尔编码器测速问题

[复制链接]
868|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JX1417|  楼主 | 2023-4-5 23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个是参考STM32F103单片机配置的一个N32G032的单霍尔测速程序,为什么程序没反应?
有弄过这个的大佬吗?求帮忙看一下是什么问题



/*定时器8-CH1 输入的编码信号*/
void EncodeTimeInit(void)
{
                GPIO_InitType GPIO_InitStructure;
                NVIC_InitType NVIC_InitStructure;
                TIM_TimeBaseInitType TIM_TimeBaseStructure;
                TIM_ICInitType TIM_ICInitStructure;

                RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_TIM8, ENABLE);
                /*GPIOB clock enable */
                RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB | RCC_APB2_PERIPH_AFIO,ENABLE);

                GPIO_InitStruct(&GPIO_InitStructure);
                /*PB12 - Encode Signal Input port1*/
                GPIO_InitStructure.Pin                                 = GPIO_PIN_12;               
                GPIO_InitStructure.GPIO_Mode                =GPIO_MODE_INPUT;
                GPIO_InitStructure.GPIO_Speed                =GPIO_SPEED_HIGH;
                GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);

                TIM_InitTimBaseStruct(&TIM_TimeBaseStructure);
                TIM_TimeBaseStructure.Period =  65536- 1;
                TIM_TimeBaseStructure.Prescaler = 0;
                TIM_TimeBaseStructure.ClkDiv = TIM_CLK_DIV1;
                TIM_TimeBaseStructure.CntMode = TIM_CNT_MODE_UP;
                TIM_InitTimeBase(TIM8, &TIM_TimeBaseStructure);
               
                TIM_InitIcStruct(&TIM_ICInitStructure);
                TIM_ICInitStructure.Channel                         =TIM_CH_1;
                TIM_ICInitStructure.IcPolarity                 =TIM_IC_POLARITY_RISING;
                TIM_ICInitStructure.IcSelection                 =TIM_IC_SELECTION_DIRECTTI;
                TIM_ICInitStructure.IcPrescaler                 =TIM_IC_PSC_DIV1;
                TIM_ICInitStructure.IcFilter                 =6;
                TIM_ICInit(TIM8, &TIM_ICInitStructure);

//                TIM_ConfigArPreload(TIM8, ENABLE);

                TIM_ClrIntPendingBit(TIM8,TIM_INT_CC1);
               
//                TIM_ClearFlag(TIM8, TIM_FLAG_CC1);
               
                TIM_ConfigInt(TIM8, TIM_INT_CC1, ENABLE);
                       
                /* Enable the TIM8 global Interrupt */
                NVIC_InitStructure.NVIC_IRQChannel                   = TIM8_CC_IRQn;
                NVIC_InitStructure.NVIC_IRQChannelPriority           = 0;
                NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;
                NVIC_Init(&NVIC_InitStructure);
               
                TIM_Enable(TIM8, ENABLE);       
}

/*判断电机转动方向*/
FlagStatus TIM_IsCountingDown(void)
{
                if(TIM8->CTRL1 & TIM_CNT_MODE_UP)
                {
                                return SET;
                }
                else
                {
                                return RESET;
                }
}

/*获取编码器数据*/
void TIM8_IRQHandler(void)
{
                if(TIM_GetIntStatus(TIM8, TIM_INT_CC1) != RESET)
                {
                                TIM_ClrIntPendingBit(TIM8, TIM_INT_CC1);
                                if(TIM_IsCountingDown() != RESET)
                                {
                                                Encoder_Overflow_Count--;
                                }
                                else
                                {
                                                Encoder_Overflow_Count++;
                                }
                }

}

使用特权

评论回复
沙发
哈悟哈悟| | 2023-4-6 12:40 | 只看该作者
GPIO没有配置复用?

使用特权

评论回复
板凳
JX1417|  楼主 | 2023-4-6 15:30 | 只看该作者
哈悟哈悟 发表于 2023-4-6 12:40
GPIO没有配置复用?

配置了还是不行


RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_TIM8, ENABLE);
                /*GPIOB clock enable */
                RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB | RCC_APB2_PERIPH_AFIO,ENABLE);

                GPIO_InitStruct(&GPIO_InitStructure);
                /*PB12 - Encode Signal Input port1*/
                GPIO_InitStructure.Pin                                                 = GPIO_PIN_12;               
                GPIO_InitStructure.GPIO_Mode                        =GPIO_MODE_INPUT;
                GPIO_InitStructure.GPIO_Speed                        =GPIO_SPEED_HIGH;
                GPIO_InitStructure.GPIO_Alternate = GPIO_AF5_TIM8;
                GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);

使用特权

评论回复
评论
JX1417 2023-4-7 21:15 回复TA
@哈悟哈悟 :还是不行 
哈悟哈悟 2023-4-6 20:15 回复TA
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP; 
地板
哈悟哈悟| | 2023-4-8 11:12 | 只看该作者
那就要检查一下你的外围电路了,看看PB12引脚输入电压是否过低导致MCU没有侦测到上升沿

使用特权

评论回复
5
tpgf| | 2023-5-5 11:15 | 只看该作者
请问霍尔编码器和普通的编码器的区别是什么呢

使用特权

评论回复
6
nawu| | 2023-5-5 12:10 | 只看该作者
tpgf 发表于 2023-5-5 11:15
请问霍尔编码器和普通的编码器的区别是什么呢

可能是输入信号的种类有一些区别的

使用特权

评论回复
7
aoyi| | 2023-5-5 13:32 | 只看该作者
没有反应是什么意思 卡在哪里了吗

使用特权

评论回复
8
zljiu| | 2023-5-5 13:44 | 只看该作者
可以正常初始化吗  还是在运行过程中卡在哪里了?

使用特权

评论回复
9
gwsan| | 2023-5-5 14:13 | 只看该作者
引脚初始化 时钟初始化以及定时器初始化的时序是不是有问题呢

使用特权

评论回复
10
tfqi| | 2023-5-5 14:38 | 只看该作者
楼主如果不能进入中断的话 就看看中断向量配置是否正确

使用特权

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

本版积分规则

6

主题

16

帖子

0

粉丝