|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。
' x& k$ k& n ]6 T$ _# x发现如果程序里有对PB端口读操作 STlink就好显示error显示如下:" F1 T- q0 T2 q# m" f$ h3 z
. Z' v$ q6 P( `6 u- D
更准确的说是一旦PB端口PB7为1时读操作就会引发Error。7 o. Z9 d9 l/ m# e/ B6 V9 e
PB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。
: `/ p8 c8 Q& b. ^其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。6 C' p# |8 V& Z x4 E
void Hall_GetStep(void)- c7 e( z0 S" n! T% X4 q
{
8 u( ~' q; j) {$ F$ q. q u8 hallCode;
" c9 a# k4 {8 [2 o1 t . K; {* e* u+ F5 _- J/ R3 J
hallCode = GPIO_ReadInputData(HALL_PORT);6 s) A# x# l* v+ q R8 k% Z5 v4 i5 O- T
hallCode = (hallCode & 0xE0)>>5;
% X7 {+ n5 S' q7 @/ X. f ! N4 N1 }9 ^- A2 V% G9 [! t
MotorControler.Hall_Code = hallCode;/ R2 R( f G7 W; b& i1 s1 q
) Q. _* s' z5 G# m+ ]* p$ w, ] switch (MotorControler.Hall_Code)0 M& [9 a; |, g) o5 M9 ^9 ]
{
6 p ~; T, U- x4 b" k; \ case 0x01: MotorControler.Hall_Step = 0; break;
8 k0 a* u3 x, u2 [- s; I+ L case 0x03: MotorControler.Hall_Step = 5; break;
( X# F2 w# W( o0 x case 0x02: MotorControler.Hall_Step = 4; break;
+ E6 A3 K$ D9 \/ _ case 0x06: MotorControler.Hall_Step = 3; break;. s- t. L) \3 m* Z e
case 0x04: MotorControler.Hall_Step = 2; break;
0 I' I! r. C3 \8 f" c$ X case 0x05: MotorControler.Hall_Step = 1; break; " |6 V: i7 ~9 ^; n9 k) a
default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;, i/ l5 l9 [7 s) V, z0 Z
}
0 T5 W" Z) c% q}
4 P/ K1 {: |- {已经更换过一次MCU问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。 : U" M; f0 w; F! D. Z. z+ I) N8 `
拜谢。5 s+ h5 } b2 s8 b) B3 e
& A# D/ Z7 v) D& f* P |
|