|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。
" U" ^0 K* u( P# x发现如果程序里有对PB端口读操作 STlink就好显示error显示如下: x, N& {& E& z! X, j
, s( ~9 m5 I# {% G# y
更准确的说是一旦PB端口PB7为1时读操作就会引发Error。
3 P: a6 x* Y9 {6 C! BPB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。$ }/ r5 r3 v7 `# H* Z
其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。/ v$ k; @' _6 p+ O; ]5 a# }) t
void Hall_GetStep(void)4 h; z7 z" A* R$ d: Q% q
{- s. Y2 x+ Y' P! e" E% g& a% J" [
u8 hallCode;8 A0 _9 r' v" Y" a1 Z
2 g" p8 e3 D& P r, J8 v hallCode = GPIO_ReadInputData(HALL_PORT);$ C! Y; b& l2 C9 @+ {
hallCode = (hallCode & 0xE0)>>5;
9 U) P; N7 e4 |& q, Y+ ~ & \2 E( K b) F
MotorControler.Hall_Code = hallCode;
2 V& T7 E# X. c8 J5 ~) ?% O% }
3 f) P( |% F; P1 z- p switch (MotorControler.Hall_Code)
! x" b+ z& p- T! _. D {! |$ p% J) _/ j$ v9 P, J% m/ s& \
case 0x01: MotorControler.Hall_Step = 0; break;8 g, H, ?7 g1 C" Y: C' \& @# H) Z
case 0x03: MotorControler.Hall_Step = 5; break;& c' l7 m/ l8 z, M C0 q
case 0x02: MotorControler.Hall_Step = 4; break;
+ h, l/ \; N x; y case 0x06: MotorControler.Hall_Step = 3; break;3 w2 p" x3 L4 z1 Z( Y) [! K
case 0x04: MotorControler.Hall_Step = 2; break;
1 X3 l- [2 S0 t9 I4 Z5 } case 0x05: MotorControler.Hall_Step = 1; break;
, P8 \4 N9 P$ F# [ default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;2 k# g3 e$ j2 B( q
}
! H* ~* N, F1 b; \8 {}
5 w2 z$ V7 t6 r已经更换过一次mcu问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。
. v1 n$ e, f$ M# q. S拜谢。
) A3 z! i% b* k" G- }7 K5 c. q# a7 V5 J# s- j0 }3 b- A
|
|