|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。
8 d9 T1 ]7 I9 n1 |! ?' H发现如果程序里有对PB端口读操作 STlink就好显示error显示如下:
# A( U( Q) ?9 Y) G5 z9 N) R% j
f5 L4 X0 e, c) g8 G
更准确的说是一旦PB端口PB7为1时读操作就会引发Error。
) l& `! r4 P& `+ D% [PB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。% I( W" Z! @/ ^5 }; F1 Y
其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。
( a. a# R% W) V5 L" F" a; bvoid Hall_GetStep(void)3 d& `" O1 t+ m0 d3 c, e A6 C
{( ?# F" e8 z6 s/ Z
u8 hallCode;' m5 _$ k6 i+ Y6 {! R5 i
& |, R! R+ H; ]* |8 t+ f, } hallCode = GPIO_ReadInputData(HALL_PORT);" m5 X+ J9 i" y6 A2 j
hallCode = (hallCode & 0xE0)>>5;8 Y5 K: ?, X# \1 {, o
, b$ p. M" f" G& A' c) ` MotorControler.Hall_Code = hallCode; S0 B2 P2 p* C @% e0 Q2 _
* [. P( l: D5 k switch (MotorControler.Hall_Code)* C# Q) {5 I) _& e6 E
{, r1 x" Q1 N5 A/ d5 V! B7 F
case 0x01: MotorControler.Hall_Step = 0; break;
! `! h5 X& G# g' ]4 h case 0x03: MotorControler.Hall_Step = 5; break;
( F4 ]1 c% a- p% p7 b8 ^ case 0x02: MotorControler.Hall_Step = 4; break;. d- J; B$ `& |
case 0x06: MotorControler.Hall_Step = 3; break;
' o$ w2 p- M) k# a8 r; x case 0x04: MotorControler.Hall_Step = 2; break;* f' N& x) w& z8 e* D- q
case 0x05: MotorControler.Hall_Step = 1; break;
3 `. v2 Z- _2 ?7 j, T& u# C default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;
% n% s* \: W/ t1 t& j }( E7 n: e) u, V& a( a
}
1 `% W' r& }$ ?* ?" N( `已经更换过一次MCU问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。
8 k" t) e; d/ _" W& ] k拜谢。7 P5 @% k2 |3 d: K3 v+ d
, N+ F5 s- E7 Q* h0 [/ b z9 @! q
|
|