最近在做一个小玩意.
主控是 stm8s103f4p6 .
用飞梭来操作的.
飞梭是可以按下的,加上左旋,右旋就有三个操作.
我把飞梭三个引脚都接到了 PA上,分别是PA1,PA2,PA3.
假设这三个脚为 A,B , M(按下).
那问题来了.
我用下降沿来触发中断,
EXTI_CR1=0X02;
PA_CR2 |= 0x0e;
在旋转编码器时,会有一个时间 AB 两脚同为 低电平,
那我如何用最简单的办法来 判断,是 PA1(A),PA2(B) 中的谁触发了中断?
此处不讨论如何使用编码器,以及PIN的设定问题
又假如,我在按下M时,又旋转编码器,
那么就会有一段时间, A,B,M 三个同是为低电平.
因为ABM都绑在PA上,不管是谁触发,都是进入到了
#pragma vector=5 // 我用的是IAR.
...
我查阅了stm8的手机,好像并没有寄存器可以查询此项数据.
要不然只好在设一个全局变量,每次进入中断,都记录此时几个PIN状态,再与上次对比.这样一来就麻烦许多.
|