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

STM 外部中断处理旋转编码开关的问题

[复制链接]
mellkaisen-3283 提问时间:2018-1-17 15:23 /
最近在将以前的旋转编码开关的轮询查状态程序改为中断触发程序。在测试过程中发现如下问题:

比如我用PA0和PA1输入上拉来接旋转编码开关,PA1开外部中断,上升下降触发中断。中断程序如下:
if(GPIO_Pin == GPIO_PIN_1)
  {
        port=(GPIOA->IDR)&0x03;         
        
        if(port==0)                 
        {Left[0]=0XFF;Right[0]=0X00;}

        else if(port==2)            
        {Right[0]=0XFF;Left[0]=0X00;}

        else if((Right[0]&port)==0x01)  
        {rowResult[0]--;Right[0]=0X00;}     

        else if((Left[0]&port)==0x03)   
        {rowResult[0]++;Left[0]=0X00;}      
  }

这个配置可以准确识别编码器的旋转,在手旋转允许的情况下,快慢都可以检测旋转量,一圈20个脉冲非常准确

但是只要你将PA1的外部中断改成PA0,同时将if(GPIO_Pin == GPIO_PIN_1)改为if(GPIO_Pin == GPIO_PIN_0)。余下的判断程序不做修改。
理论上应该没有问题,但是问题却出现了,问题基本如下:
一般需要转动3到4个脉冲后,程序才能准确识别一个脉冲。每圈识别出来的脉冲数都不同的。

而且奇怪的是,我其实同时接了4个编码器,只要你的中断脚在2个脚中间数值小的那个,就会出现这种情况,比如PA4PA5接了一个,PA4中断,程序不正常,换到PA5就正常。这种情况同时出现在STM32F1和STM32F4上。

不知为何会出现这种情况。


收藏 评论5 发布时间:2018-1-17 15:23

举报

5个回答
努力的人 回答时间:2018-1-19 20:51:11
本帖最后由 努力的人 于 2018-1-19 20:53 编辑

你这个是2块钱那个模块吧,对于脉冲计数,你可以使用输入捕获来计算脉冲,这个相对于你使用外部中断更准确一些。你出现的问题看会不会是不同线的中断的优先级配置的问题

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

mellkaisen-3283 回答时间:2018-1-21 17:57:36
努力的人 发表于 2018-1-19 20:51
你这个是2块钱那个模块吧,对于脉冲计数,你可以使用输入捕获来计算脉冲,这个相对于你使用外部中断更准确 ...

现在主要是在别的程序不变的情况下,只改变外部中断脚,但是就是会出现这种高位脚程序可以,低位脚程序不行的情况。有点摸不着头脑。
七哥 回答时间:2018-1-28 13:09:23
STM32的IO管脚中断问题,以前也遇到过类似的。
在做PS2鼠标的时候,发现直接用中断检测有时不好用。后来进中断后,加了一小点延时,然后再读取中断IO状态的,就好使了。具体什么原因没有太去关注,有可能是中断IO有抖动,或者中断沿已经触发,但IO电平还没稳定。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

mellkaisen-3283 回答时间:2018-2-1 11:50:41
toofree 发表于 2018-1-28 13:09
STM32的IO管脚中断问题,以前也遇到过类似的。
在做PS2鼠标的时候,发现直接用中断检测有时不好用。后来进 ...

你说的我也考虑了,主要是一样的程序,高位IO中断程序正常,低位IO中断程序不正常。示波器显示的波形是一样的
无薪税绵 回答时间:2018-3-6 17:08:07
有几种可能,
1、端口干扰,建议加104电容。
2、端口未正确初始化。
3、对应端口的中断优先级,设置不正确。

还有,建议把编码开关两个端口对调一下,
看看问题端口是否还是不正常。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版