|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
STM8903 三相电机驱动程序。
$ Y2 f% p5 q! m7 ^ b发现如果程序里有对PB端口读操作 STlink就好显示error显示如下:
' r! o( U8 s# g6 U6 ]
/ Y3 X* h5 q9 }+ I) A
更准确的说是一旦PB端口PB7为1时读操作就会引发Error。# E0 L' c8 Z- @
PB端口5,6,7接Hall Sensor,电平为5V/0V电平无异常。当把电机转到100,101,110三个位置时,就会显示一时错误,无法进行仿真。4 S, b# R) O: g2 Z
其他状态目前没有发现问题,如果屏蔽这段程序则仿真正常。
0 A9 w1 X" v- ~% a( Tvoid Hall_GetStep(void)- Y- m A! a, ^! O- j0 m6 i1 e
{0 e& H9 Z/ e( v: a D
u8 hallCode;+ X* W! N! o1 d4 u! K
/ { g: O) ^1 H) { R; t
hallCode = GPIO_ReadInputData(HALL_PORT);# A$ L, b. x* N7 X% w% ?: L5 V
hallCode = (hallCode & 0xE0)>>5;& a: W" W9 Z" N3 n) J
" A6 Y6 ?2 t' {: |) `' c) \; W. ` MotorControler.Hall_Code = hallCode;
% \, J. I' F+ H, i8 G' d ) m4 |+ m5 A. Y% r5 ^
switch (MotorControler.Hall_Code) L( N: U; {# x* e/ `, E: F3 }
{* z% E! N6 s% Z
case 0x01: MotorControler.Hall_Step = 0; break;3 `2 H8 h. Z# Q3 |5 N9 F
case 0x03: MotorControler.Hall_Step = 5; break;, B4 B5 y7 b+ b; q3 ?
case 0x02: MotorControler.Hall_Step = 4; break;
$ W6 @! U2 w1 G case 0x06: MotorControler.Hall_Step = 3; break;
+ ]2 d5 o. h, V: w) o7 f" E' R* p case 0x04: MotorControler.Hall_Step = 2; break;, [" T. G& ^, ^1 G9 v, j
case 0x05: MotorControler.Hall_Step = 1; break;
0 a( \3 l" d# R- Y2 A default: MotorControler.Hall_Step = HALL_CODE_ERROR; break;; Q: x$ M# [. W" q
}# B# Q4 S+ j+ r" p( p4 W. Z
}
0 G% {; }: i5 ~+ c R已经更换过一次MCU问题还在,请教有没有大虾遇到过这个问题,或者有解决思路,帮忙指点一下。 + v* |1 ^6 m J* U# ~! ^1 O
拜谢。
4 l6 d1 U" [) J9 k" b. V: k- {, C' O+ w$ a% Y) c. c; O
|
|