OpenEdv-开源电子网

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

stm32读取编码器的值时,main函数中的延迟失效了?

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-3-14
在线时间
4 小时
发表于 2019-3-14 16:39:26 来自手机 | 显示全部楼层 |阅读模式
如题,我在使用103zet6读取编码器的值时,采用的是TIM4的输入捕获模式,用通道1和通道2分别接编码器的A相和B相。在定时器捕获中断函数里,我已经可以正确的读出编码值。
但有个问题是我在main的while里,设定每隔2秒通过串口输出一次编码值。但当我转动编码器时,串口就会不停输出,编码器不转的时候又恢复正常。也就是说当转动编码器时,while循环里的延迟函数不起作用了,输出的值倒是正确的。
不知道各位大佬有没有遇到过类似的问题,还烦请不吝赐教,感激不尽~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-3-15 09:53:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-3-14
在线时间
4 小时
 楼主| 发表于 2019-3-15 10:41:07 来自手机 | 显示全部楼层
自己再顶一下,大佬们没有遇到过吗?用仿真器也调试了,感觉时序也是正常的。一旦全速运行就出问题了。
回复 支持 反对

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2018-4-18
在线时间
18 小时
发表于 2019-3-15 21:59:28 | 显示全部楼层
你没有把你的程序贴出来,所以我只能主观猜测,不知道我的主管臆想对不对,你需要记录你编码器的值,在两秒钟的程序里发你每次最后读的值。我用的编码器可以设定,它是主动发送模式,所以我时刻有值。
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-3-14
在线时间
4 小时
 楼主| 发表于 2019-3-18 08:46:39 来自手机 | 显示全部楼层
谢谢上面这位老哥。问题出在正点的delay_ms这个函数,编码器中断导致这个延迟时间变短了,具体引起原因还没找到。不过通过自己写了个延时或者用个定时器来计时输出串口就可以了。
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-3-14
在线时间
4 小时
 楼主| 发表于 2019-4-1 10:12:22 来自手机 | 显示全部楼层
自己回复下,找到问题了。因为在捕获中断里加了个5us延时,中断产生时,systick的load值被改写了,所以主函数的1000ms也就延时不出来了。
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2020-9-27
在线时间
15 小时
发表于 2020-11-28 16:55:32 | 显示全部楼层
liuyuepeng0419 发表于 2019-4-1 10:12
自己回复下,找到问题了。因为在捕获中断里加了个5us延时,中断产生时,systick的load值被改写了,所以主函 ...

求个源码
回复 支持 反对

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2020-11-30 08:24:41 | 显示全部楼层
都是延时函数惹的货,早知道就不用延时函数来延时了..
软件定时器,走一波.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 02:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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