|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。4 q; b8 T+ x: \) i
发现如果程序里有对PB端口读操作 STlink就好显示error显示如下:
; {% c/ D5 W- J
0 S3 Q/ ]1 R5 N' }5 S3 n& K
更准确的说是一旦PB端口PB7为1时读操作就会引发Error。2 z7 c5 o$ r/ d6 u+ @4 Z% P
PB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。
4 M. `5 `4 l# }8 ?3 u% [5 H2 e其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。
$ O9 ~# z f. c# nvoid Hall_GetStep(void)
' F" }) z" y4 C% c" V3 H{2 M6 G# ~! `/ T/ E
u8 hallCode;
7 K: q, P+ T: |, D! m. ]6 q" [" c 7 {) z* w2 D) \+ [0 A a0 L
hallCode = GPIO_ReadInputData(HALL_PORT);
7 Z/ ?# v2 n- M: r hallCode = (hallCode & 0xE0)>>5;
% c' e+ {( C' q! C$ `) W( P, I* \ ; |6 x9 ]# |7 a, W7 Q2 M
MotorControler.Hall_Code = hallCode;8 C5 P, b( a1 \$ x( g/ E8 f/ g0 {& r: T
6 ~: A3 x g* F7 O
switch (MotorControler.Hall_Code)
3 x) }0 g# E" f) K$ ?; v {. J- M2 n( m2 z8 u, V5 J
case 0x01: MotorControler.Hall_Step = 0; break;
% ~) Q5 x( I$ ]$ j. M case 0x03: MotorControler.Hall_Step = 5; break;
* p# x) h' U, m. K" j) Y* W case 0x02: MotorControler.Hall_Step = 4; break; }) ~3 H, _- B$ o" N0 b
case 0x06: MotorControler.Hall_Step = 3; break;
1 g! M* q: O0 k' e: R' o case 0x04: MotorControler.Hall_Step = 2; break;5 K; w/ l% W$ R$ S
case 0x05: MotorControler.Hall_Step = 1; break;
, S5 W+ G! ^' d' _$ E default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;
- z$ |# J+ N( C }
4 x3 f& t' k4 Z9 c, \6 J t# B$ w7 s}
6 u/ a3 J6 v* m8 G9 W: a已经更换过一次mcu问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。
$ V! ]7 O' k% o% _9 _' b# h$ T拜谢。- Q( O3 T. U- v3 }
4 J" j8 y9 R3 a8 P5 _9 f/ _
|
|