找回密码
 注册
关于网站域名变更的通知
查看: 402|回复: 6
打印 上一主题 下一主题

关于STC8A8K64S4A12开发板外部中断问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-28 10:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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
  • TA的每日心情
    开心
    2022-12-27 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-12-28 11:10 | 只看该作者
    按键按下有接触不良问题,造成前一个中断没处理完,后一个中断又来了的问题,所以出现了你提的问题。

    该用户从未签到

    3#
    发表于 2021-12-28 11:11 | 只看该作者
    按键有机械触点,接通、断开时会有抖动,出现多次信号引起中断。
    6 k. y* M6 R2 B如果怀疑MCU的中断又问题,你可以用信号来测试,比如用100KHZ的信号发1000000个脉冲送中断,中断函数里计数,然后显示比较。我经常如此测各家MCU的中断。

    该用户从未签到

    4#
    发表于 2021-12-28 11:11 | 只看该作者
    用按键做中断源时,是需要做防抖,消抖动处理的

    该用户从未签到

    5#
    发表于 2021-12-28 11:12 | 只看该作者
    你没有做按键去抖动处理啊!抖动会产生多次中断的!你可以看一下串口输出的数的频率,是不是一按下就会有一串的的数字输出啊

    该用户从未签到

    6#
    发表于 2021-12-28 11:12 | 只看该作者
    用按键状态机消除抖动

    该用户从未签到

    7#
    发表于 2021-12-31 18:49 | 只看该作者
    看看有没有接触不良
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-18 15:48 , Processed in 0.125000 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表