找回密码
 立即注册
查看: 80|回复: 6

关于I2C与GPIO配置冲突的问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-04-09 14:39:32
已绑定手机

2

主题

5

回帖

62

积分

注册会员

积分
62
发表于 2025-2-28 10:52:23 | 显示全部楼层 |阅读模式
下面这段代码,我只要注释掉I2C_Config(),LED灯就可以正常闪烁,一旦去掉注释,LED灯就是常亮,为啥啊?

#include "Config.h"
#include "Type_def.h"
#include "STC8G_H_GPIO.h"
#include "STC8G_H_delay.h"
#include "STC8G_H_I2C.h"
#include "STC8G_H_Switch.h"

void GPIO_Config()
{
P1_MODE_OUT_PP(GPIO_Pin_0);
P3_MODE_IO_PU(GPIO_Pin_2);
P3_MODE_IO_PU(GPIO_Pin_3);
}

void I2C_Config()
{
I2C_InitTypeDef I2C_InitStructure;
I2C_InitStructure.I2C_Speed = 58;
I2C_InitStructure.I2C_Enable = ENABLE;
I2C_InitStructure.I2C_Mode = I2C_Mode_Slave;
I2C_InitStructure.I2C_MS_WDTA = ENABLE;
I2C_InitStructure.I2C_SL_ADR = 0x78;
I2C_InitStructure.I2C_SL_MA = ENABLE;

I2C_Init(&I2C_InitStructure);

I2C_SW(I2C_P33_P32);

}
void main()
{
GPIO_Config();
// I2C_Config();
while(1)
{
P10 = 0;
delay_ms(1000);
P10 = 1;
delay_ms(1000);

}

}

我问了AI,AI帮我改了一下代码,这样貌似可以工作了,这又是为啥?
void main()
{
    // 配置GPIO
    GPIO_Config();
   
    // 确认GPIO配置是否生效,没有下面这4行代码,LED不会闪烁,或者不亮(只有前2行)或者常亮(只有后2行)。
    P10 = 0;
    delay_ms(1000);
    P10 = 1;
    delay_ms(1000);

    // 配置I2C
    I2C_Config();

    while(1)
    {
        P10 = 0;
        delay_ms(1000);
        P10 = 1;
        delay_ms(1000);
    }
}
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-04-09 14:39:32
已绑定手机

2

主题

5

回帖

62

积分

注册会员

积分
62
发表于 2025-2-28 11:41:48 | 显示全部楼层
还有一个问题,这个LED闪烁的频率好像跟我程序里的对不上。

如果我注释掉I2C_Config(),则上述问题就都不存在了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-04-09 14:39:32
已绑定手机

2

主题

5

回帖

62

积分

注册会员

积分
62
发表于 2025-2-28 13:16:20 | 显示全部楼层
我找到原因了
delay_ms的函数声明是void  delay_ms(unsigned char ms),最大不超过255,我用了1000,所以就出错了。

改成void  delay_ms(unsigned int ms) 就好了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2025-2-28 13:29:31 | 显示全部楼层
zhouq*** 发表于 2025-2-28 13:16
我找到原因了
delay_ms的函数声明是void  delay_ms(unsigned char ms),最大不超过255,我用了1000,所以就 ...

不对啊,AI也没动delay函数啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-04-09 14:39:32
已绑定手机

2

主题

5

回帖

62

积分

注册会员

积分
62
发表于 2025-2-28 14:20:15 | 显示全部楼层
Lkck*** 发表于 2025-2-28 13:29
不对啊,AI也没动delay函数啊

我用的不是AI,是STC8H,我也是从官方下载的库函数,确实是unsigned char的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2025-2-28 14:54:14 | 显示全部楼层
zhouq*** 发表于 2025-2-28 14:20
我用的不是AI,是STC8H,我也是从官方下载的库函数,确实是unsigned char的

2025-02-28_145332.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:108
  • 最近打卡:2025-04-28 08:34:00
已绑定手机

5

主题

118

回帖

674

积分

高级会员

积分
674
发表于 2025-2-28 16:38:13 | 显示全部楼层
高级软件工程师-唐工
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:24 , Processed in 0.123440 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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