|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
买了一块 STC8A8K64S4A12 开发板,测试外部中断,感觉是不是芯片有些问题?' K& n7 n& R ]$ o }
如图,图片左边是串口输出信息,按理来说 输出应该是 0 和 1 交替输出,
n9 f* X* K( C4 @* P F连续输出 1 或者 0 都是不对的,但是实际测试就是有连续输出1,有时候连续输出0,为什么会这样呢?
o5 C: B' Z9 g# y( Y$ u( V8 B/ C: k/ V2 B. u) k& \9 r9 N
我是用一个按键测试外部中断1,引脚默认是高电平,9 B$ Z0 ?; u. J0 ]* Q' ^! M3 F+ A5 o$ y
按键按下,把引脚拉低,应该触发下降沿,应该输出 0;9 `. m$ U& [& P0 R& {
松开按键,引脚恢复高电平,应该触发上升沿,应该输出 1;" r( ?5 r8 J+ m R! h3 D
" l5 P. L9 H+ N* Y* T( z6 y
代码如下:
& y9 I& {, u0 `8 E' V* S! y( t5 I9 ~" f3 N) Q
void INT1_Init(void)
- h* x$ z) N6 F( `/ k2 Q5 w{
# g8 {7 o6 N% k IE1 = 0; //将INT1中断请求标志位清"0"; d. u' m7 T# E' B4 }0 Y& U# I( r
EX1 = 1; //使能INT1中断允许位
$ a5 P7 s! r1 Z. R' m. t) M IT1 = 0; //选择INT1为上升沿或下降沿触发方式
0 b ]* F! H$ ^( `" J' \}
4 w9 J; U' |* \. N, @4 c8 t2 @) R/ I0 W1 s; w/ s" t) [4 W$ z
/**************************************& Z% p' i+ N) _4 g; o1 H
功能描述:外部中断服务程序& [% l3 N b1 `/ q: q3 k
入口参数:无
}' J' j- T( c6 H2 d j9 m返回值:无
+ p* _1 b% f! @; I1 _, M***************************************/
# Z3 u; S8 s5 d3 y7 j nvoid INT1_int (void) interrupt 2
/ U ?; P1 s* q% t8 i8 G% Q{7 \% K1 n8 G1 H( p
if (1 == KEY) // 上升沿! ~9 ~" `2 t+ j% Y) |
{
# U: j( z$ z7 D! F RED_LED = 1;
; h3 Y5 N9 ^7 Y; [8 { Uart1_Send_String("1");/ O% V9 ~9 e( @6 N5 I% t
}
+ N q7 _) v. f1 w/ S& }& Z6 o else // 下降沿& U4 u# t# _. K9 e
{$ P9 L: a; _+ D* l1 s
RED_LED = 0;7 y# S# n7 I# O/ l3 k4 r
Uart1_Send_String("0");1 `" ?: m8 T+ [* _8 F4 q6 W" Y
}
& ^+ U$ m+ `9 _1 ]7 E}+ A. U- Y) }4 p" V6 h" r
# j* ~( ~6 [! ^8 l
8 o6 h3 K3 s: m9 b再补充一些信息:在我实际应用中,板子有把低压变成高压,接了负载才容易会出现这种奇怪的现象,
+ x9 Z2 ]1 i3 h# ?2 D不接负载就基本没什么问题,我在想是不是电路板中有大电流,或者芯片中的电流过大造成芯片不正常了8 {0 W& a" l' _. z* v
# R. L% P7 U M# f0 s- ^0 }这个问题我已经在软件层面做了处理,保证业务逻辑正常。
6 [9 Y2 a' F" W, O( n现在只是好奇为什么硬件会出现这种情况,看看有没有哪位大侠知道原因( K8 c) q F, {" `3 U8 o. g7 o
. ?+ G5 ~* s! S8 g/ B2 Q |
|