|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
买了一块 STC8A8K64S4A12 开发板,测试外部中断,感觉是不是芯片有些问题?
/ a: P8 P0 L- q6 U1 y如图,图片左边是串口输出信息,按理来说 输出应该是 0 和 1 交替输出,5 K+ p; N' R+ X" B! e
连续输出 1 或者 0 都是不对的,但是实际测试就是有连续输出1,有时候连续输出0,为什么会这样呢?
3 \$ k4 Q+ U5 j0 y! f P8 M4 e$ U5 {2 D2 k) i
我是用一个按键测试外部中断1,引脚默认是高电平,
7 c% f# k! m% k' i& s3 F按键按下,把引脚拉低,应该触发下降沿,应该输出 0;
1 N, u. q- N2 U松开按键,引脚恢复高电平,应该触发上升沿,应该输出 1;
2 ~/ @/ q$ U4 k* ^, x+ }- }) R( h
5 m" f O4 @/ H1 J) [% w代码如下:
! Z2 a& E+ s$ U! e! A Y+ `, Q# g' E& g! K( w7 l
void INT1_Init(void)
8 y9 z6 t. s" O0 T- [{
6 J- V/ H9 l! l$ ^- o IE1 = 0; //将INT1中断请求标志位清"0"
( i: C; G& p! _ EX1 = 1; //使能INT1中断允许位/ G! I. }$ `1 p$ p/ f2 {2 y
IT1 = 0; //选择INT1为上升沿或下降沿触发方式
% b* V4 |& z( i; E% G1 x}
% o" h c; E4 E5 C. S
0 v3 e2 a2 ^: ^# o5 ~" ~, E& B! _/**************************************+ U, L! I. { U0 [9 E
功能描述:外部中断服务程序
" Z/ ~# M. @4 Q; b入口参数:无) C! S; \/ R9 K1 @& h O8 Q
返回值:无
: Z ?# w& ^1 A; s" ~$ j***************************************/
+ s9 e4 L& e/ _* k4 cvoid INT1_int (void) interrupt 2
% ]; E) S: H2 A{
2 b! c- j' N' v# Q* J o% t if (1 == KEY) // 上升沿4 ?; Z; L2 p8 M* _
{
! k6 l0 X. ^/ V: \! W RED_LED = 1;
8 q) R% v& T+ K# O0 G( ] Uart1_Send_String("1");" s7 S$ A2 V( f0 R+ _ W6 ?; W; ]9 Y
}
% b: C$ u- R: Y- R$ ?3 `6 l else // 下降沿
+ ]& h+ p. z3 V# U {
3 E; E2 p# p' `. g! s* q RED_LED = 0;+ y9 B Y6 F' A7 s4 H$ `" [
Uart1_Send_String("0");/ D. Q# c. M$ D1 w9 ^
}+ Q+ J6 K9 b; G/ `" t! }
}
. R) G- V7 e( K: `3 k2 _4 b% E$ F" M1 v; q8 w# Q. R
! a( j m8 \! F% W) Q% | |再补充一些信息:在我实际应用中,板子有把低压变成高压,接了负载才容易会出现这种奇怪的现象,9 k& ]( m6 i- f: B
不接负载就基本没什么问题,我在想是不是电路板中有大电流,或者芯片中的电流过大造成芯片不正常了9 w% Q! Y p }
6 A& J0 ^. d* v0 v8 V8 r; K
这个问题我已经在软件层面做了处理,保证业务逻辑正常。0 I8 N3 L8 @! X# _5 ^
现在只是好奇为什么硬件会出现这种情况,看看有没有哪位大侠知道原因& D9 B+ Z5 E' T6 D" Q- L
3 {6 [2 \1 U9 e! w3 p, l" F4 `/ O |
|