|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。
. P0 u) p! _! Y/ Y发现如果程序里有对PB端口读操作 STlink就好显示error显示如下:
& m2 m1 }+ T4 l
2 L6 {( |) h7 L' h( } h更准确的说是一旦PB端口PB7为1时读操作就会引发Error。0 P0 W0 X6 T. W5 O# Y8 a
PB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。
1 ^+ W3 ]$ B3 |4 g: p% N其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。
: P2 ?, U, n, s z4 }void Hall_GetStep(void)
% y) O5 b, F1 U$ {" {: M{
5 c& O$ u5 P+ {; E3 F u8 hallCode;8 W" f. K, ^, p7 l7 T$ X& z
8 b' l" @5 B0 K8 W* l+ [9 Z hallCode = GPIO_ReadInputData(HALL_PORT);
. T7 d/ \+ y/ v7 H5 E hallCode = (hallCode & 0xE0)>>5;
, O( _" x) f$ S) V) E- u; _" k - F7 e% T, m$ h7 B+ B2 R5 @
MotorControler.Hall_Code = hallCode;$ `* b- `1 f% h" V
5 v; O, I. c* G7 F switch (MotorControler.Hall_Code)# o) N$ u3 p; S
{
+ [. U( ^5 N* Q! x7 }; n* q; A# w Q case 0x01: MotorControler.Hall_Step = 0; break;* [5 i2 ]2 ?2 y6 f# D2 K
case 0x03: MotorControler.Hall_Step = 5; break;
1 w- \+ G! t* ]. G9 j0 }* ` case 0x02: MotorControler.Hall_Step = 4; break;8 d2 v' ^5 L/ c3 ?# J4 m
case 0x06: MotorControler.Hall_Step = 3; break;; r+ z- b1 b# U. J1 J3 F, o
case 0x04: MotorControler.Hall_Step = 2; break;5 C9 _! ~; `- M
case 0x05: MotorControler.Hall_Step = 1; break;
! s: A2 Y, H/ g default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;
( `' p7 z, j1 A" z: { }
/ m& i7 H; t8 b( ]} ' w; P% t. Q" M$ e5 f
已经更换过一次MCU问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。
7 n; K' r* r) K0 G d0 H% R2 S拜谢。# u! O+ m& Z5 s' ^
f* T) Y; \! F |
|