[N32G03x] N32G032单霍尔编码器测速问题

[复制链接]
1273|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);

评论

@哈悟哈悟 :还是不行  发表于 2023-4-7 21:15
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;  发表于 2023-4-6 20:15
哈悟哈悟 发表于 2023-4-8 11:12 | 显示全部楼层
那就要检查一下你的外围电路了,看看PB12引脚输入电压是否过低导致MCU没有侦测到上升沿
tpgf 发表于 2023-5-5 11:15 | 显示全部楼层
请问霍尔编码器和普通的编码器的区别是什么呢
nawu 发表于 2023-5-5 12:10 | 显示全部楼层
tpgf 发表于 2023-5-5 11:15
请问霍尔编码器和普通的编码器的区别是什么呢

可能是输入信号的种类有一些区别的
aoyi 发表于 2023-5-5 13:32 | 显示全部楼层
没有反应是什么意思 卡在哪里了吗
zljiu 发表于 2023-5-5 13:44 | 显示全部楼层
可以正常初始化吗  还是在运行过程中卡在哪里了?
gwsan 发表于 2023-5-5 14:13 | 显示全部楼层
引脚初始化 时钟初始化以及定时器初始化的时序是不是有问题呢
tfqi 发表于 2023-5-5 14:38 | 显示全部楼层
楼主如果不能进入中断的话 就看看中断向量配置是否正确
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部