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

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

[复制链接]

该用户从未签到

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

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

    [LV.1]初来乍到

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

    该用户从未签到

    3#
    发表于 2021-12-28 11:11 | 只看该作者
    按键有机械触点,接通、断开时会有抖动,出现多次信号引起中断。
    7 l+ h. [0 _) U2 L2 r6 t2 |如果怀疑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-8-12 09:27 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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