在level=1下,程序中 F280X_HALL3_Next_State_Ptr(p)函数执行的条件是EdgeDebounced不等于0,而EdgeDebounced唯一的赋值就是函数F280X_HALL3_Debounce(HALL3 *p),而调用该函数也只有void F280X_HALL3_Read(HALL3 *p)函数,该函数调用完F280X_HALL3_Debounce后,随即便p->EdgeDebounced = 0;那么F280X_HALL3_Next_State_Ptr(p)永远不能执行了。还有,Revolutions小于0的时候,建立HallMap[p->HallMapPointer],这个根本就不能保证把霍尔开关的6个状态保存在这个数组里面, 因为只有当检测到霍尔信号边沿的时候才能保存,HallMapPointer靠脉冲函数来增加,那么如果脉冲产生了N个了,即HallMapPointer都不知道改变到0-5哪个了,电机才转动到出现霍尔信号边沿的出现,简单来说,程序根本不能保证impl1.Out产生一次脉冲,电机就可以转动到出现一个霍尔信号边沿。
这个好像是一个非常大的BUG,不知道我有没有理解错,请指导一下,谢谢。