找回密码
 立即注册
楼主: aoteman

大神们求救,十万火急帮帮小弟,IO中断的问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-05-01 09:48:02
已绑定手机

4

主题

20

回帖

90

积分

注册会员

积分
90
发表于 4 天前 | 显示全部楼层
Debu*** 发表于 2025-4-27 10:57
打开EAXFR呢,没看到,检查错误上来就先看EAXFR和PxMx
https://www.stcaimcu.com/forum.php?mod=viewthread ...

好的,我来加上

点评

需要设置的寄存器如下,按需要设置 初始化: 中断:  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 4 天前 | 显示全部楼层
aote*** 发表于 2025-4-27 11:01
好的,我来加上


需要设置的寄存器如下,按需要设置
初始化:

  1. //PxINT
  2.        
  3. //        P0INTE=0x00;
  4. //        P1INTE=0x00;
  5. //        P2INTE=0x00;
  6. //        P3INTE=0x00;
  7. //        P4INTE=0x00;
  8. //        P5INTE=0x00;
  9. //        P6INTE=0x00;
  10. //        P7INTE=0x00;
  11. //        P0IM0=0x00;
  12. //        P0IM1=0x00;
  13. //        P1IM0=0x00;
  14. //        P1IM1=0x00;
  15. //        P2IM0=0x00;
  16. //        P2IM1=0x00;
  17. //        P3IM0=0x00;
  18. //        P3IM1=0x00;
  19. //        P4IM0=0x00;
  20. //        P4IM1=0x00;
  21. //        P5IM0=0x00;
  22. //        P5IM1=0x00;
  23. //        P6IM0=0x00;
  24. //        P6IM1=0x00;
  25. //        P7IM0=0x00;
  26. //        P7IM1=0x00;
  27. //        P0WKUE=0x00;
  28. //        P1WKUE=0x00;
  29. //        P2WKUE=0x00;
  30. //        P3WKUE=0x00;
  31. //        P4WKUE=0x00;
  32. //        P5WKUE=0x00;
  33. //        P6WKUE=0x00;
  34. //        P7WKUE=0x00;
复制代码
  1. EA=1;
复制代码
中断:
  1. //void P0INT_ISR(void) interrupt P0INT_VECTOR
  2. //{
  3. //        if(P0INTF&0x01)
  4. //        {
  5. //                P0INTF&=~0x01;
  6. //        }
  7. //        if(P0INTF&0x02)
  8. //        {
  9. //                P0INTF&=~0x02;
  10. //        }
  11. //        if(P0INTF&0x04)
  12. //        {
  13. //                P0INTF&=~0x04;
  14. //        }
  15. //        if(P0INTF&0x08)
  16. //        {
  17. //                P0INTF&=~0x08;
  18. //        }
  19. //        if(P0INTF&0x10)
  20. //        {
  21. //                P0INTF&=~0x10;
  22. //        }
  23. //        if(P0INTF&0x20)
  24. //        {
  25. //                P0INTF&=~0x20;
  26. //        }
  27. //        if(P0INTF&0x40)
  28. //        {
  29. //                P0INTF&=~0x40;
  30. //        }
  31. //        if(P0INTF&0x80)
  32. //        {
  33. //                P0INTF&=~0x80;
  34. //        }
  35. //}
  36. //void P1INT_ISR(void) interrupt P1INT_VECTOR
  37. //{
  38. //        if(P1INTF&0x01)
  39. //        {
  40. //                P1INTF&=~0x01;
  41. //        }
  42. //        if(P1INTF&0x02)
  43. //        {
  44. //                P1INTF&=~0x02;
  45. //        }
  46. //        if(P1INTF&0x04)
  47. //        {
  48. //                P1INTF&=~0x04;
  49. //        }
  50. //        if(P1INTF&0x08)
  51. //        {
  52. //                P1INTF&=~0x08;
  53. //        }
  54. //        if(P1INTF&0x10)
  55. //        {
  56. //                P1INTF&=~0x10;
  57. //        }
  58. //        if(P1INTF&0x20)
  59. //        {
  60. //                P1INTF&=~0x20;
  61. //        }
  62. //        if(P1INTF&0x40)
  63. //        {
  64. //                P1INTF&=~0x40;
  65. //        }
  66. //        if(P1INTF&0x80)
  67. //        {
  68. //                P1INTF&=~0x80;
  69. //        }
  70. //}
  71. //void P2INT_ISR(void) interrupt P2INT_VECTOR
  72. //{
  73. //        if(P2INTF&0x01)
  74. //        {
  75. //                P2INTF&=~0x01;
  76. //        }
  77. //        if(P2INTF&0x02)
  78. //        {
  79. //                P2INTF&=~0x02;
  80. //        }
  81. //        if(P2INTF&0x04)
  82. //        {
  83. //                P2INTF&=~0x04;
  84. //        }
  85. //        if(P2INTF&0x08)
  86. //        {
  87. //                P2INTF&=~0x08;
  88. //        }
  89. //        if(P2INTF&0x10)
  90. //        {
  91. //                P2INTF&=~0x10;
  92. //        }
  93. //        if(P2INTF&0x20)
  94. //        {
  95. //                P2INTF&=~0x20;
  96. //        }
  97. //        if(P2INTF&0x40)
  98. //        {
  99. //                P2INTF&=~0x40;
  100. //        }
  101. //        if(P2INTF&0x80)
  102. //        {
  103. //                P2INTF&=~0x80;
  104. //        }
  105. //}
  106. //void P3INT_ISR(void) interrupt P3INT_VECTOR
  107. //{
  108. //        if(P3INTF&0x01)
  109. //        {
  110. //                P3INTF&=~0x01;
  111. //        }
  112. //        if(P3INTF&0x02)
  113. //        {
  114. //                P3INTF&=~0x02;
  115. //        }
  116. //        if(P3INTF&0x04)
  117. //        {
  118. //                P3INTF&=~0x04;
  119. //        }
  120. //        if(P3INTF&0x08)
  121. //        {
  122. //                P3INTF&=~0x08;
  123. //        }
  124. //        if(P3INTF&0x10)
  125. //        {
  126. //                P3INTF&=~0x10;
  127. //        }
  128. //        if(P3INTF&0x20)
  129. //        {
  130. //                P3INTF&=~0x20;
  131. //        }
  132. //        if(P3INTF&0x40)
  133. //        {
  134. //                P3INTF&=~0x40;
  135. //        }
  136. //        if(P3INTF&0x80)
  137. //        {
  138. //                P3INTF&=~0x80;
  139. //        }
  140. //}
  141. //void P4INT_ISR(void) interrupt P4INT_VECTOR
  142. //{
  143. //        if(P4INTF&0x01)
  144. //        {
  145. //                P4INTF&=~0x01;
  146. //        }
  147. //        if(P4INTF&0x02)
  148. //        {
  149. //                P4INTF&=~0x02;
  150. //        }
  151. //        if(P4INTF&0x04)
  152. //        {
  153. //                P4INTF&=~0x04;
  154. //        }
  155. //        if(P4INTF&0x08)
  156. //        {
  157. //                P4INTF&=~0x08;
  158. //        }
  159. //        if(P4INTF&0x10)
  160. //        {
  161. //                P4INTF&=~0x10;
  162. //        }
  163. //        if(P4INTF&0x20)
  164. //        {
  165. //                P4INTF&=~0x20;
  166. //        }
  167. //        if(P4INTF&0x40)
  168. //        {
  169. //                P4INTF&=~0x40;
  170. //        }
  171. //        if(P4INTF&0x80)
  172. //        {
  173. //                P4INTF&=~0x80;
  174. //        }
  175. //}
  176. //void P5INT_ISR(void) interrupt P5INT_VECTOR
  177. //{
  178. //        if(P5INTF&0x01)
  179. //        {
  180. //                P5INTF&=~0x01;
  181. //        }
  182. //        if(P5INTF&0x02)
  183. //        {
  184. //                P5INTF&=~0x02;
  185. //        }
  186. //        if(P5INTF&0x04)
  187. //        {
  188. //                P5INTF&=~0x04;
  189. //        }
  190. //        if(P5INTF&0x08)
  191. //        {
  192. //                P5INTF&=~0x08;
  193. //        }
  194. //        if(P5INTF&0x10)
  195. //        {
  196. //                P5INTF&=~0x10;
  197. //        }
  198. //        if(P5INTF&0x20)
  199. //        {
  200. //                P5INTF&=~0x20;
  201. //        }
  202. //        if(P5INTF&0x40)
  203. //        {
  204. //                P5INTF&=~0x40;
  205. //        }
  206. //        if(P5INTF&0x80)
  207. //        {
  208. //                P5INTF&=~0x80;
  209. //        }
  210. //}
  211. //void P6INT_ISR(void) interrupt P6INT_VECTOR
  212. //{
  213. //        if(P6INTF&0x01)
  214. //        {
  215. //                P6INTF&=~0x01;
  216. //        }
  217. //        if(P6INTF&0x02)
  218. //        {
  219. //                P6INTF&=~0x02;
  220. //        }
  221. //        if(P6INTF&0x04)
  222. //        {
  223. //                P6INTF&=~0x04;
  224. //        }
  225. //        if(P6INTF&0x08)
  226. //        {
  227. //                P6INTF&=~0x08;
  228. //        }
  229. //        if(P6INTF&0x10)
  230. //        {
  231. //                P6INTF&=~0x10;
  232. //        }
  233. //        if(P6INTF&0x20)
  234. //        {
  235. //                P6INTF&=~0x20;
  236. //        }
  237. //        if(P6INTF&0x40)
  238. //        {
  239. //                P6INTF&=~0x40;
  240. //        }
  241. //        if(P6INTF&0x80)
  242. //        {
  243. //                P6INTF&=~0x80;
  244. //        }
  245. //}
  246. //void P7INT_ISR(void) interrupt P7INT_VECTOR
  247. //{
  248. //        if(P7INTF&0x01)
  249. //        {
  250. //                P7INTF&=~0x01;
  251. //        }
  252. //        if(P7INTF&0x02)
  253. //        {
  254. //                P7INTF&=~0x02;
  255. //        }
  256. //        if(P7INTF&0x04)
  257. //        {
  258. //                P7INTF&=~0x04;
  259. //        }
  260. //        if(P7INTF&0x08)
  261. //        {
  262. //                P7INTF&=~0x08;
  263. //        }
  264. //        if(P7INTF&0x10)
  265. //        {
  266. //                P7INTF&=~0x10;
  267. //        }
  268. //        if(P7INTF&0x20)
  269. //        {
  270. //                P7INTF&=~0x20;
  271. //        }
  272. //        if(P7INTF&0x40)
  273. //        {
  274. //                P7INTF&=~0x40;
  275. //        }
  276. //        if(P7INTF&0x80)
  277. //        {
  278. //                P7INTF&=~0x80;
  279. //        }
  280. //}
复制代码


DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:45
  • 最近打卡:2025-05-01 13:13:05
已绑定手机

0

主题

6

回帖

193

积分

注册会员

积分
193
发表于 4 天前 | 显示全部楼层
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。

换用INT0和INT1(对应引脚是P3.2和P3.3),同时支持上升沿和下降沿中断。

点评

这个是IO中断,和外部中断不一样的 [attachimg]95703[/attachimg]  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 4 天前 | 显示全部楼层
xiao*** 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。

换用INT0和INT1(对应引脚是P3.2和P3.3) ...

这个是IO中断,和外部中断不一样的
截图202504271448125828.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-05-01 09:48:02
已绑定手机

4

主题

20

回帖

90

积分

注册会员

积分
90
发表于 4 天前 | 显示全部楼层
xiao*** 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。

换用INT0和INT1(对应引脚是P3.2和P3.3) ...

不行啊,外部中断不支持上升沿触发,我要Pwm的占空比,需要读下降沿和上升沿之间的间隔时间
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-05-01 09:48:02
已绑定手机

4

主题

20

回帖

90

积分

注册会员

积分
90
发表于 4 天前 | 显示全部楼层
xiao*** 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。

换用INT0和INT1(对应引脚是P3.2和P3.3) ...

而且在打板子项目交付来不及
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-05-01 09:48:02
已绑定手机

4

主题

20

回帖

90

积分

注册会员

积分
90
发表于 4 天前 | 显示全部楼层
erci*** 发表于 2025-4-27 14:48
这个是IO中断,和外部中断不一样的

只说了不一样区别在什么地方,硬件原理吗,对于应用层,貌似都是边沿出发为主

点评

对于开发者,区别就是寄存器配置差异,和中断差异。  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 4 天前 | 显示全部楼层
aote*** 发表于 2025-4-27 15:47
只说了不一样区别在什么地方,硬件原理吗,对于应用层,貌似都是边沿出发为主 ...

对于开发者,区别就是寄存器配置差异,和中断差异。
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-05-01 09:48:02
已绑定手机

4

主题

20

回帖

90

积分

注册会员

积分
90
发表于 3 天前 | 显示全部楼层
erci*** 发表于 2025-4-27 15:52
对于开发者,区别就是寄存器配置差异,和中断差异。

多谢大神,加上汇编可以触发边沿中断了,谢了,我也是第一次用Stc的IO中断,以往也都是多用外部中断,封贴!!!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2025-05-01 06:53:32
已绑定手机

4

主题

339

回帖

1558

积分

金牌会员

积分
1558
发表于 3 天前 | 显示全部楼层
13259*** 发表于 2025-4-27 08:17
本身PWM就可以输出你需要的几个占空比。为啥要用中断?
                                  if(Zoom_speed= ...

他是要检测占空比,而不是输出
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 21:00 , Processed in 0.134323 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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