|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。
, ^9 c; F3 d7 }& M( O! h发现如果程序里有对PB端口读操作 STlink就好显示error显示如下:! y8 P, O* J$ s7 W
! f# B. y. O6 e; b7 u9 D L
更准确的说是一旦PB端口PB7为1时读操作就会引发Error。
/ D e4 F, o. Y, C$ B7 YPB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。2 a( n j, a7 Q4 k7 j
其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。& `" p+ h( E* I, }7 ^$ `$ s9 e+ @
void Hall_GetStep(void)' |" `# Q- }0 d% F# c" ]" R
{
+ G$ f1 U5 z5 l* u, g6 S u8 hallCode;) Y0 }8 Z% ~# O; ~4 r
* w+ t I! ]) e: ~# W8 a
hallCode = GPIO_ReadInputData(HALL_PORT);
; q7 W0 A# s2 W! S$ Y hallCode = (hallCode & 0xE0)>>5;
5 C- m! g5 z8 c6 @ / w0 P5 a- a; D$ G' y
MotorControler.Hall_Code = hallCode;2 f3 K" w! f1 m. Z4 ]5 S
4 ]" P5 Y1 a: y a; D: p# U0 T! R6 \ switch (MotorControler.Hall_Code)+ Z& D: D( D# o7 F- F/ x
{% {3 c* t+ a' q
case 0x01: MotorControler.Hall_Step = 0; break;
# ?% n7 U& ]6 E: |$ o case 0x03: MotorControler.Hall_Step = 5; break;; J4 V) _; Q3 ~. V
case 0x02: MotorControler.Hall_Step = 4; break;
5 h% F) U: L% a$ Q, }8 ? case 0x06: MotorControler.Hall_Step = 3; break;. o2 \: j) M# G' H6 O3 V' J4 S( l
case 0x04: MotorControler.Hall_Step = 2; break;
) R1 t8 Z$ \* |8 }/ V case 0x05: MotorControler.Hall_Step = 1; break; ]: Z% B' i" L$ w. t
default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;0 K$ n8 d) e( C) N/ O7 m- a2 F
}
8 F/ J$ v0 F# V0 Y: Q( E. C}
- ~$ a6 _- t- H9 A6 k已经更换过一次mcu问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。 / q6 w! V. P; X, F
拜谢。# K- h4 o8 V; j. ?
0 e0 b9 P1 \* F8 s' A# L8 ` |
|