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

求助,如何使用stm32F4进行带方向的脉冲计数,提供思路就行

[复制链接]
jsrdczy 提问时间:2019-9-10 14:34 /
各位大佬,我现在需要对外部高速脉冲+方向电平进行计数,也就是说方向电平为高电平时,脉冲计数累加。方向电平为低电平时,脉冲计数累减。

我目前已经做了单向的计数,用TIM5的CH1引脚加外部时钟模式1,还做了AB相增量式编码器计数。现在还想做个方向电平+高速脉冲计数,目前没有想到好的办法,各位大佬看看能不能提供点思路。
收藏 评论7 发布时间:2019-9-10 14:34

举报

7个回答
wenyangzeng 回答时间:2019-9-10 15:10:38
编码器接口应该就很合适了

无标题.png
す疯Ⅱ恒す 回答时间:2019-9-10 18:08:31
方向线做外部中断,上下降沿都进中断,进中断立刻改寄存器改方向。不过太高速来回变换估计反应不过来。
jsrdczy 回答时间:2019-9-11 13:24:32
wenyangzeng 发表于 2019-9-10 15:10
编码器接口应该就很合适了

编码器模式下,如果一个通道电平不变。另外一个通道的脉冲只会让计数加1减1从而维持不变吧,这个该怎么实现一直累加呢,
wenyangzeng 回答时间:2019-9-11 13:59:55
jsrdczy 发表于 2019-9-11 13:24
编码器模式下,如果一个通道电平不变。另外一个通道的脉冲只会让计数加1减1从而维持不变吧,这个该怎么实 ...

正交编码呀,TI1超前或滞后TI2  90°决定方向,你必须使用正交编码器
jsrdczy 回答时间:2019-9-11 14:14:50
wenyangzeng 发表于 2019-9-11 13:59
正交编码呀,TI1超前或滞后TI2  90°决定方向,你必须使用正交编码器

不好意思多问一句,我现在的测量对象并不是正交编码器,而是带方向口的高速脉冲输入。方向口就是保持高电平或者低电平用来指示正方向或负方向。TI1时脉冲输入,ti2的电平时维持不变的。
wenyangzeng 回答时间:2019-9-11 15:06:40
jsrdczy 发表于 2019-9-11 14:14
不好意思多问一句,我现在的测量对象并不是正交编码器,而是带方向口的高速脉冲输入。方向口就是保持高电 ...

既然是高低电平表示方向,就用1个定时器输入就够了。
tanic 回答时间:2019-9-11 16:35:38

int place_cnt=0;
int8_t dir=0;//IO初始化时候注意赋值//TIM->ARR初始化为最大65535


//io中断
void io_int_callback()
{
   updata_place_cnt();
  if(io==1)dir = 1;
else dir = -1;
}
//定时调用更新
void updata_place_cnt()
{
  uint32_t temp=TIMX->CNT;
  place_cnt += temp*dir;
  TIMX->CNT = 0;
}

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版