关于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检测流程的。