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

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

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

19

主题

86

回帖

246

积分

中级会员

积分
246
发表于 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);
       

}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:209
  • 最近打卡:2026-04-04 14:50:05
已绑定手机

15

主题

287

回帖

1498

积分

金牌会员

DIY玩家

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:725
  • 最近打卡:2026-03-30 12:09:34
已绑定手机

97

主题

7246

回帖

1万

积分

超级版主

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

使用道具 举报 送花

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

19

主题

86

回帖

246

积分

中级会员

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

谢谢
回复

使用道具 举报 送花

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

19

主题

86

回帖

246

积分

中级会员

积分
246
发表于 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-4-4 17:46 , Processed in 0.113022 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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