关于HALL3_DRV函数,之前没找到合适的方法,导致在宏定义之前切来切去把自己搞晕了!后来找到一个方法,就是鼠标点在CCS 宏定义上,CCS(5.2)会自动的把全部嵌套显示出来,然后在把显示出的程序拷贝到自己的文件里慢慢研究!

改函数中的Debounced执行如下:

1.首先EdgeDebounced=0,执行读hallgpiod得到hall1.HallGpio

2.判断hall1.HallGpio与HallGpioAccepted的关系,开始hall1.HallGpio(等于hall真实状态如100)不等于HallGpioAccepted(初始是0)

3.继续判断hall1.HallGpio == hall1.HallGpioBuffer,开始肯定也是不等的,道理同上。

4.将hall1.HallGpio 的值写到hall1.HallGpioBuffer缓冲区。

5.第一个循环结束。

6.下一个中断后又从1.开始执行。

7.当执行到3.时,程序开始跳转,因为此时,hall1.HallGpio = hall1.HallGpioBuffer。

8. 因为hall1.DebounceCount<hall1.DebounceAmount,程序不动作,只记录消抖次数。

9.当消抖次数hall1.DebounceCount>=hall1.DebounceAmount(10次=25uS*10,消抖时间)时,

hall1.HallGpio = hall1.HallGpioAccepted,hall状态被确认。

以上不是全部过程,但顺着这个思路下去会知道具体的HALL检测流程的。