|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。# Q$ s. t2 a/ @" _* N
发现如果程序里有对PB端口读操作 STlink就好显示error显示如下:
* `) e, a0 b! d7 M) ]& Z. i! C/ h
4 w* N0 c8 L6 e$ x) ^
更准确的说是一旦PB端口PB7为1时读操作就会引发Error。! J) ^9 m ]) {- D0 G
PB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。2 n; _. @5 e7 \" J- X
其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。' w( s6 o' ?% u
void Hall_GetStep(void)
0 Z T0 X# H+ }) B( ]' H x, M{; e8 J# a$ N1 K3 g* L
u8 hallCode;
4 f; s& Q9 A& Z4 ]) N& X ! v8 }) M0 H) Z% h
hallCode = GPIO_ReadInputData(HALL_PORT);
/ m K/ [2 |2 s2 N( N8 I hallCode = (hallCode & 0xE0)>>5;
( I7 K9 A& H; I + @& }0 b. T" H* c& p: c# W$ X
MotorControler.Hall_Code = hallCode;
3 S& [) d! m* d& U! T
' w) b0 K1 U# D" ~+ X( U* |) } switch (MotorControler.Hall_Code)
9 [9 ^4 R8 m. A5 X9 I% E6 J8 @ {
/ p; O; b2 Z1 u* b case 0x01: MotorControler.Hall_Step = 0; break;
4 I# l1 ^7 ^. R8 \# R+ V case 0x03: MotorControler.Hall_Step = 5; break;- Z! \: c6 z1 }
case 0x02: MotorControler.Hall_Step = 4; break;! ^5 m. m, |6 s1 a* Z
case 0x06: MotorControler.Hall_Step = 3; break;
8 B, Q, M3 G. U5 {' n7 X2 \ case 0x04: MotorControler.Hall_Step = 2; break;
4 v3 A" `6 i0 ~1 t: P, b case 0x05: MotorControler.Hall_Step = 1; break;
1 ~7 B! m3 X) a4 _3 ]/ Z0 U7 ^$ ^ default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;+ g8 \: e% k ^2 p
}. q' s' G6 U! c; i; t
} & Y/ M2 F- P: g o
已经更换过一次mcu问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。
7 e/ ]0 ?7 x: I* b4 ?, m3 Q拜谢。7 _7 ~- Y8 K" j, X. o
+ q+ Z- C$ Q/ \+ ]# T5 D
|
|