找回密码
 立即注册
查看: 57|回复: 4

STC32G12K128 I2C中断 什么情况下触发?

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:308
  • 最近打卡:2026-03-07 08:08:19
已绑定手机

18

主题

83

回帖

316

积分

中级会员

积分
316
发表于 2026-2-25 10:18:46 | 显示全部楼层 |阅读模式
各位大神,过年好!给给位拜个晚年!
以下程序是我从STC32G12K128 datasheet 抄写的I2C中断方式的例程。
我下载以后发现P1.4 ,P1.5没有波形,是不是中断没有触发,不知道I2C中断什么情况下触发?

这个程序不应该一直发送0xaa吗?
请教各位大神。

#include"stc32g.h"
#include"intrins.h"

sbit SDA  =  P1^4;
sbit SCL  =  P1^5;

bit busy;

void I2C_Isr() interrupt 24
{
        if(I2CMSST & 0x40)
        {
                I2CMSST &= ~0x40;
                busy = 0;
        }
}
       
void Start()
{
        busy = 1;
        I2CMSCR = 0x81;
        while(busy);
}

void SendData(char dat)
{
        I2CTXD = dat;
        busy = 1;
        I2CMSCR = 0x82;
        while(busy);
}

void main()
{
        EAXFR = 1;
        CKCON = 0x00;
        WTST = 0x00;
       
        P0M0 = 0x00;
        P0M1 = 0x00;
        P1M0 = 0x00;
        P1M1 = 0x00;
        P2M0 = 0x00;
        P2M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        P4M0 = 0x00;
        P4M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;
       
        I2CCFG = 0xe0;
        I2CMSST = 0X00;
        EA = 1;
       
        Start();
        SendData(0xaa);
        while(1);
       

}

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:181
  • 最近打卡:2026-03-07 00:13:58
已绑定手机

10

主题

195

回帖

1143

积分

金牌会员

DIY玩家

积分
1143
发表于 2026-2-25 11:27:27 | 显示全部楼层
SendData(0xaa);之后
        程序执行于while(1);之中
真正的学徒往往怀着大师的心
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:719
  • 最近打卡:2026-03-07 07:41:42
已绑定手机

97

主题

7247

回帖

1万

积分

超级版主

积分
13780
发表于 2026-2-25 12:53:46 | 显示全部楼层
硬件发完1字节数据或执行完1个操作后请求中断,中断内busy标志位清零,从while(busy);继续执行
没信号检查IO模式,默认是高阻
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:308
  • 最近打卡:2026-03-07 08:08:19
已绑定手机

18

主题

83

回帖

316

积分

中级会员

积分
316
发表于 2026-2-25 20:50:36 | 显示全部楼层
狂热*** 发表于 2026-2-25 11:27
SendData(0xaa);之后
        程序执行于while(1);之中

谢谢
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:308
  • 最近打卡:2026-03-07 08:08:19
已绑定手机

18

主题

83

回帖

316

积分

中级会员

积分
316
发表于 2026-2-25 20:50:59 | 显示全部楼层
Debu*** 发表于 2026-2-25 12:53
硬件发完1字节数据或执行完1个操作后请求中断,中断内busy标志位清零,从while(busy);继续执行
没信号检查I ...

感谢大神
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-7 15:31 , Processed in 0.110459 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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