關注中 關注中:o
编码器应该是个自定义的功能吧stm32上好像没见到过
dzzwoaizi 发表于 2016-11-10 11:55
两种方案:第一种就时STM32每个IO口都用按键中断,你可以牺牲一个定时器,当一个中断过来就计数,等待下一 ...
楼主问的是编码器模式和捕获模式同时开启,M法测高速,T法测低速,你给他回答霍尔传感。。。。。。。。。。。。
:o关注一下
我用了两个定时器实现的,TIM2设成hall模式测脉冲间隔并送出触发信号给tim3,tim3配制成计数模式
本帖最后由 zhanghankui 于 2017-7-25 15:47 编辑
dapan100 发表于 2017-7-25 09:11
我用了两个定时器实现的,TIM2设成hall模式测脉冲间隔并送出触发信号给tim3,tim3配制成计数模式 ...
将TIM2接口的CH1 CH2输入送到TIM3是怎么实现的,还请指教。如果只是单纯把TI1F_ED送出来不行吧,编码器接口功能计脉冲数要有要有两个脉冲输入才能自动识别方向实现加减
本帖最后由 dapan100 于 2017-7-25 15:49 编辑
zhanghankui 发表于 2017-7-25 15:44
将TIM2接口的CH1 CH2输入送到TIM3是怎么实现的,还请指教
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3, ENABLE);
TIM_ITRxExternalClockConfig(TIM3, TIM_TS_ITR1);
TIM_TimeBaseStructInit(&TIM_TimeBaseInitStructure);
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
TIM_Cmd(TIM3, ENABLE);
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
TIM_SelectHallSensor(TIM2, ENABLE);
TIM_SelectInputTrigger(TIM2, TIM_TS_TI1F_ED);
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);
TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_OC1);
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICFilter = 9;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_TRC;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInit(TIM2, &TIM_ICInitStructure);
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
TIM_Cmd(TIM2, ENABLE);
dapan100 发表于 2017-7-25 15:46
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3, ENABLE);
TIM_ITRxExternalClock ...
这样TIM3计数怎么识别正反转呢
zhanghankui 发表于 2017-7-25 15:49
这样TIM3计数怎么识别正反转呢
这里没用正交解码,如果要识别的只能进中断了
dapan100 发表于 2017-7-25 15:51
这里没用正交解码,如果要识别的只能进中断了
这样的问题就是送到TIM3的脉冲不能直接拿来累加计数,因为不知道是正向脉冲还是反向脉冲,。
只一个方向转是没问题