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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
买了一块 STC8A8K64S4A12 开发板测试外部中断,感觉是不是芯片有些问题?4 a3 `6 m- `! t: w" ?" U" K3 r( C
如图,图片左边是串口输出信息,按理来说 输出应该是 0 和 1 交替输出,  C5 v) O; \  Y  A1 P8 a
连续输出 1 或者 0 都是不对的,但是实际测试就是有连续输出1,有时候连续输出0,为什么会这样呢?4 a9 L! {7 Y7 J% Q

/ W4 Z  {2 z4 Z我是用一个按键测试外部中断1,引脚默认是高电平,
+ M! U: ^( T) l4 n+ Q) y2 C按键按下,把引脚拉低,应该触发下降沿,应该输出 0;" X) U! q2 C2 v3 Y  M
松开按键,引脚恢复高电平,应该触发上升沿,应该输出 1;
! q  M! C/ f7 b( ?. P! E; F- X0 N4 v& J- q/ F. Q% I4 m% Y
代码如下:
. ^  m! K. S  j' t7 B, t
7 ?) T2 k- I( ovoid INT1_Init(void)' p$ Y" k5 g7 F3 f1 U) T7 t) d
{
% `1 d) \/ p6 i; k) q& `. {     IE1 = 0;          //将INT1中断请求标志位清"0"# h& P1 W: |; K1 E9 u( ?3 D, Y% k
     EX1 = 1;          //使能INT1中断允许位
& g" [+ S: j3 t6 O    IT1 = 0;          //选择INT1为上升沿或下降沿触发方式   
- ]8 Q; I6 A* ~: o}
% q% Y/ m6 e  e( m' f9 a+ n4 [5 Z3 m2 Q% k7 H6 w2 z
/**************************************
( n  H1 z8 [- F6 L; I功能描述:外部中断服务程序0 ?( O# S/ J( @: r1 m2 F
入口参数:无* V6 P) u5 {& A/ r8 X* \
返回值:无
  y/ g4 B( W- N8 D! u5 i***************************************/
4 {: k; d( f2 P1 O5 y' p5 Vvoid INT1_int (void) interrupt 2
- @- \% h% E3 o5 C# i3 R  z{3 ]1 O) ]* ^, X; r6 o
     if (1 == KEY) // 上升沿
1 ], Q: ]1 F# ^$ ?/ c$ ?    {3 o' z- d3 z4 Z
         RED_LED = 1;6 p/ ]$ G! B; u, a. |' K7 j6 `
         Uart1_Send_String("1");
3 D9 l7 J  {: J  B: W. d: n     }
7 p# |) x. L9 d( r5 Y! H     else          // 下降沿8 C- \5 o4 y" Y2 w+ V) v
    {. }1 X$ K& `2 n$ S" J$ q8 Q. ~# t
         RED_LED = 0;
- H/ X( ]- `& q1 W8 ?         Uart1_Send_String("0");
7 b6 v: `2 q$ ~2 U! W     }
5 {9 ?5 a$ b& R% Y}* |1 n1 n( u) |; Y9 w  h$ c, y2 b

. I" E5 N" U/ p# P) s5 p% s5 t- l. m  Z& ^6 W8 p% i
再补充一些信息:在我实际应用中,板子有把低压变成高压,接了负载才容易会出现这种奇怪的现象,
% Y1 ?# z  j1 {5 G' F8 ~不接负载就基本没什么问题,我在想是不是电路板中有大电流,或者芯片中的电流过大造成芯片不正常了, S$ Z7 [( Q, a# g, X
) J/ V: W. P( f  ?2 \2 H5 Y
这个问题我已经在软件层面做了处理,保证业务逻辑正常。! w& E3 x! r* p% ]
现在只是好奇为什么硬件会出现这种情况,看看有没有哪位大侠知道原因+ S) h$ I" x! }2 M# r# s+ D

: X: g* e) L: _8 A/ V/ y" @* P& K
  • TA的每日心情
    开心
    2022-12-27 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    该用户从未签到

    3#
    发表于 2021-12-28 11:11 | 只看该作者
    按键有机械触点,接通、断开时会有抖动,出现多次信号引起中断。
    % \; f, `' h  R0 V" @6 V6 l如果怀疑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-10-9 13:23 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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