找回密码
 立即注册
查看: 717|回复: 1

新手请教关于stc8h8k64u IO口问题

[复制链接]

3

主题

4

回帖

37

积分

新手上路

积分
37
发表于 2023-6-16 17:50:59 | 显示全部楼层 |阅读模式
本帖最后由 wang2012216 于 2023-6-18 18:21 编辑


!!!已解决
业余爱好,stc8h8k64u 32脚的,P2口配置为准双向,另外IIC用了P24、P25,
P26、P27分别接了个五向开关的2个脚,上电设置为1,用万用表检测这两个io口一直为低电平,请问该怎么配置?
P0口相同配置,P00、P01、P02也是接五向开关,P0口就正常,单机双击长按检测均正常,就P26、P27一直是低电平,外接上拉也不行。


1:IIC和GPIO初始化。
  1. void        GPIO_config(void)
  2. {
  3.         GPIO_InitTypeDef        GPIO_InitStructure;                                //结构定义
  4.         GPIO_InitStructure.Pin  = GPIO_Pin_All;                        //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
  5.         GPIO_InitStructure.Mode = GPIO_PullUp;                        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
  6.         GPIO_Inilize(GPIO_P0,&GPIO_InitStructure);        //初始化
  7.         GPIO_InitStructure.Pin  = GPIO_Pin_All;                        //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
  8.         GPIO_InitStructure.Mode = GPIO_PullUp;                        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
  9.         GPIO_Inilize(GPIO_P2,&GPIO_InitStructure);        //初始化
  10. }
  11. /****************  I2C初始化函数 *****************/
  12. void        I2C_config(void)
  13. {
  14.         I2C_InitTypeDef                I2C_InitStructure;
  15.         I2C_InitStructure.I2C_Mode      = I2C_Mode_Master;        //主从选择   I2C_Mode_Master, I2C_Mode_Slave
  16.         I2C_InitStructure.I2C_Enable    = ENABLE;                                                //I2C功能使能,   ENABLE, DISABLE
  17.         I2C_InitStructure.I2C_MS_WDTA   = DISABLE;                                        //主机使能自动发送,  ENABLE, DISABLE
  18.         I2C_InitStructure.I2C_MS_Interrupt = DISABLE;                                //使能主机模式中断,  ENABLE, DISABLE
  19.         I2C_InitStructure.I2C_Speed     = 32;                                                                //总线速度=Fosc/2/(Speed*2+4),      0~63
  20.         I2C_InitStructure.I2C_IoUse     = I2C_P24_P25;                        //IO口切换   I2C_P14_P15, I2C_P24_P25, I2C_P33_P32
  21.         I2C_Init(&I2C_InitStructure);
  22. }
复制代码
2:按键定义。
  1. #define KA P26
  2. #define KB P27
  3. #define KC P00
  4. #define KD P01
  5. #define KP P02
复制代码
3:主函数。
  1. void main()
  2. {        
  3.         u8 key;
  4. //        GPIO_config();
  5.         P0M0 = 0x00;
  6.         P0M1 = 0x00;
  7.         P2M0 = 0x00;
  8.         P2M1 = 0x00;
  9.         I2C_config();
  10.         OLED_Init();
  11.         Timer_config();
  12.         OLED_WR_Byte(0xA5, OLED_CMD); //全亮
  13.         OLED_Clear();
  14.         OLED_WR_Byte(0xA4, OLED_CMD); //正常模式
  15.         OLED_DrawBMP(30, 0, 69, 64, BMP1);
  16.         delay_ms(1000);
  17.         OLED_Clear();
  18.         EA = 1;
  19.         KA=1;KB=1;KC=1;KD=1;KP=1;
  20.         while(1)
  21.         {
  22.                 if(T_10ms)
  23.                 {
  24.                         T_10ms = 0;
  25.                         key = key_read();
  26.                         if(key == L_key) OLED_ShowString(32, 3, "L_KEY", 16);
  27.                         else if(key == D_key) OLED_ShowString(32, 3, "D_KEY", 16);
  28.                         else if(key == S_key) OLED_ShowString(32, 3, "S_KEY", 16);
  29.                 }
  30.         }
  31. }
复制代码


回复

使用道具 举报 送花

3

主题

4

回帖

37

积分

新手上路

积分
37
发表于 2023-6-16 17:54:43 | 显示全部楼层
原理图
屏幕截图 2023-06-16 175403.png
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 23:03 , Processed in 0.104414 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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