|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。
) ~8 m$ l& |: Q% h) E发现如果程序里有对PB端口读操作 STlink就好显示error显示如下:( F2 t# e2 g+ K+ W5 E
* `, s ~+ G1 Z$ h更准确的说是一旦PB端口PB7为1时读操作就会引发Error。
* y4 X/ c, E" X/ S1 g, EPB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。
) K% x& U6 o% o* ?1 b其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。+ v, j6 Z' b& W" a& n; r
void Hall_GetStep(void)
: q* O: _. _- a* L! j0 C{
) ~3 B# ^$ n* U u8 hallCode;4 A$ Q! W+ v/ y: k- R) M5 S
* R ^. O P% M/ a% m d& w hallCode = GPIO_ReadInputData(HALL_PORT);2 `# \2 d1 q# m* J# Z0 S: h1 P
hallCode = (hallCode & 0xE0)>>5;; K+ b# u% Y3 }9 ~" u
: a/ G8 ?+ A9 Q0 }/ S
MotorControler.Hall_Code = hallCode;" c+ _! U. o) E+ q: Y9 B
3 j! ] ?8 i, P% s! t6 l switch (MotorControler.Hall_Code)
7 ?+ P y& C+ q {
; a* m- a0 Z# U) U3 e% z case 0x01: MotorControler.Hall_Step = 0; break;& s% Y9 R# W* b4 m+ F E$ V
case 0x03: MotorControler.Hall_Step = 5; break;
' q: Q2 j' [9 h6 f case 0x02: MotorControler.Hall_Step = 4; break;
9 O+ R7 w2 _; r0 d. v) Q2 y case 0x06: MotorControler.Hall_Step = 3; break;+ }5 ?: x8 q& c' w K
case 0x04: MotorControler.Hall_Step = 2; break;& q3 |1 t" `+ \, [! x- Y, _7 z
case 0x05: MotorControler.Hall_Step = 1; break; : T- D( V r t+ l C) ]
default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;# ^/ Y M4 D, z8 H% D. ?
}- x8 y$ \5 z" J5 A" V
} 5 Q' b5 f; ^2 l+ l& f9 O
已经更换过一次MCU问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。 2 g) _- r; j7 C8 Q( o+ K. n
拜谢。8 d4 D5 \1 } v0 B5 M9 d! x3 z' h
8 @! E6 ]7 g# o5 r$ C7 a3 p1 R
|
|