找回密码
 立即注册
查看: 3128|回复: 11

求助!STC8H1K16(Pin32) P2口上升沿和下降沿中断

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-17 13:57:41

19

主题

51

回帖

491

积分

中级会员

积分
491
发表于 2023-3-17 20:03:44 | 显示全部楼层 |阅读模式
本帖最后由 代码人生 于 2023-3-17 20:06 编辑

之前使用的是 INT0和INT1 两个中断(上升沿和下降沿),IO口电平变化都会触发中断,向上位机发送对应的报警信号,一切正常没有问题。
现在使用的是P2口8个IO口输入,使用普通IO口查询模拟上升沿和下降沿也能用,但是MCU发送数据期间,会漏掉IO的变化,导致回传丢失部分数据。

求助更好的办法解决这个问题,最好能用中断解决,上升和下降沿不是单独上升或者下降沿,有简单例程就可以。谢谢


回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:66
  • 最近打卡:2025-05-13 11:26:56

719

主题

1万

回帖

1万

积分

管理员

积分
15711
发表于 2023-3-17 22:58:27 | 显示全部楼层
STC8H1K16-36I-LQFP32管脚图
P2.0/P2.1/P2.2/P2.3, 是 PWM5/PWM6/PWM7/PWM8, 都可以支持边沿变化中断
P2.4/P2.6, 是 PWM3P_2, PWM4P_2, 都可以支持边沿变化中断
只剩下 P2.5/P2.7你要改到其他的INT0/INT1口,或定时查询来解决

1.png


  • 打卡等级:常住居民I
  • 打卡总天数:66
  • 最近打卡:2025-05-13 11:26:56

719

主题

1万

回帖

1万

积分

管理员

积分
15711
发表于 2023-3-17 23:11:40 | 显示全部楼层
或者改用STC8H8K64U-45I-LQFP32/48/64的D版本,所有的普通I/O都可以支持外部中断,
并且是:
下降沿,上升沿,高电平,低电平 都可以中断
注意:STC8H8K64U-45I-LQFP32的D版本,无P1.2, P1口是USB型MCU风格的排列
1.png
1.png
2.png

3.png


  • 打卡等级:常住居民I
  • 打卡总天数:66
  • 最近打卡:2025-05-13 11:26:56

719

主题

1万

回帖

1万

积分

管理员

积分
15711
发表于 2023-3-17 23:19:04 | 显示全部楼层
或者改用STC32G8K64-42I-LQFP32/48,所有的普通I/O都可以支持外部中断,
并且是:
下降沿,上升沿,高电平,低电平 都可以中断
注意:STC32G8K64-42I-LQFP32, P1口是USB型MCU风格的排列, 无USB, 所以有P1.2

1.png
2.png
  • 打卡等级:常住居民I
  • 打卡总天数:62
  • 最近打卡:2025-05-13 17:13:14

73

主题

5923

回帖

1万

积分

超级版主

积分
12213
发表于 2023-3-18 00:12:02 | 显示全部楼层
使用定时器中断查询,优先级中断。
串口中断收发,低优先级。
不要在任何中断中等待、延时,有事做事,没事退出。
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-17 13:57:41

19

主题

51

回帖

491

积分

中级会员

积分
491
发表于 2023-3-18 08:49:59 | 显示全部楼层
神*** 发表于 2023-3-17 23:11
或者改用STC8H8K64U-45I-LQFP32/48/64的D版本,所有的普通I/O都可以支持外部中断,
并且是:
下降沿,上升 ...

看过手册了,这个型号不支持普通IO中断,需要更换其他芯片,谢谢
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-17 13:57:41

19

主题

51

回帖

491

积分

中级会员

积分
491
发表于 2023-3-18 08:53:44 | 显示全部楼层
梁*** 发表于 2023-3-18 00:12
使用定时器中断查询,优先级中断。
串口中断收发,低优先级。
不要在任何中断中等待、延时,有事做事,没事 ...

用定时器这个感觉应该可以,在定时器里模拟上升沿和下降沿,判断动作,然后做标记,放到数组里,不做延时,我试试看,谢谢梁工:handshake

点评

经常用类似方法检测边沿,比中断的好处了,可以方便的加入数字滤波。 定时器中断查询检测边沿,检测到的最小脉冲宽度(高电平或低电平)比定时器中断间隔时间略大,比如100us中断,可以检测到高低电平均略大于100us  详情 回复 发表于 2023-3-18 11:28
  • 打卡等级:常住居民I
  • 打卡总天数:62
  • 最近打卡:2025-05-13 17:13:14

73

主题

5923

回帖

1万

积分

超级版主

积分
12213
发表于 2023-3-18 11:28:23 | 显示全部楼层
代码*** 发表于 2023-3-18 08:53
用定时器这个感觉应该可以,在定时器里模拟上升沿和下降沿,判断动作,然后做标记,放到数组里,不做延时 ...

经常用类似方法检测边沿,比中断的好处了,可以方便的加入数字滤波。
定时器中断查询检测边沿,检测到的最小脉冲宽度(高电平或低电平)比定时器中断间隔时间略大,比如100us中断,可以检测到高低电平均略大于100us的脉冲。此定时器中断优先级最高,别的中断优先级均比此定时器低,就不会丢失边沿。
  • 打卡等级:常住居民I
  • 打卡总天数:66
  • 最近打卡:2025-05-13 11:26:56

719

主题

1万

回帖

1万

积分

管理员

积分
15711
发表于 2023-3-18 16:44:14 | 显示全部楼层
1.png

改用STC8H8K64U-45I-LQFP32/48/64的D版本,所有的普通I/O都可以支持外部中断,
并且是:
下降沿,上升沿,高电平,低电平 都可以中断
注意:STC8H8K64U-45I-LQFP32的D版本,无P1.2, P1口是USB型MCU风格的排列
  • 打卡等级:常住居民I
  • 打卡总天数:66
  • 最近打卡:2025-05-13 11:26:56

719

主题

1万

回帖

1万

积分

管理员

积分
15711
发表于 2023-3-18 16:45:54 | 显示全部楼层
STC8H1K16-36I-LQFP32管脚图
P2.0/P2.1/P2.2/P2.3, 是 PWM5/PWM6/PWM7/PWM8, 都可以支持边沿变化中断
P2.4/P2.6, 是 PWM3P_2, PWM4P_2, 都可以支持边沿变化中断
只剩下 P2.5/P2.7你要改到其他的INT0/INT1口,或定时查询来解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-13 18:45 , Processed in 0.130457 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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