查看: 527|回复: 0

[经验] TMS320C66x学习笔记之通用并行端口中断服务程序示例

[复制链接]

该用户从未签到

发表于 2021-1-13 18:40:50 | 显示全部楼层 |阅读模式
分享到:
  以下伪代码用于写入uPP中断服务路由(ISR)函数的模板。请注意,UPP组合所有事件到单个CPU中断,同时如果前面的中断仍然没有从ISR返回,一个新的中断将不调用ISR。为了允许进一步调用ISR,结束中断UPP寄存器(UPEOI)必须写入零值。因此,ISR应检查多个事件,在处理每一个事件后应继续复查,直到没有更多的事件被发现。然后,它在返回之前必须写UPEOI=0。
  1. Function upp_isr
  2. {
  3.      interrupt_status = UPIER
  4.      while (interrupt_status != 0)
  5.      {
  6.           if (interrupt_status.EOLI)
  7.           {
  8.                UPIER.EOLI = 1 // clear EOLI
  9.                // Handle EOLI...
  10.           }
  11.           if (interrupt_status.EOWI)
  12.           {
  13.                UPIER.EOWI = 1 // clear EOWI
  14.                // Handle EOWI...
  15.           }
  16.           if (interrupt_status.ERRI)
  17.           {
  18.                UPIER.ERRI = 1 // clear ERRI
  19.                // Handle ERRI...
  20.           }
  21.           if (interrupt_status.UORI)
  22.           {
  23.                UPIER.UORI = 1 // clear UORI
  24.                // Handle UORI...
  25.           }
  26.           if (interrupt_status.DPEI)
  27.           {
  28.                UPIER.DPEI = 1 // clear DPEI
  29.                // Handle DPEI...
  30.           }
  31.           if (interrupt_status.EOLQ)
  32.           {
  33.                UPIER.EOLQ = 1 // clear EOLQ
  34.                // Handle EOLQ...
  35.           }
  36.           if (interrupt_status.EOWQ)
  37.           {
  38.                UPIER.EOWQ = 1 // clear EOWQ
  39.                // Handle EOWQ...
  40.           }
  41.           if (interrupt_status.ERRQ)
  42.           {
  43.                UPIER.ERRQ = 1 // clear ERRQ
  44.                // Handle ERRQ...
  45.           }
  46.           if (interrupt_status.UORQ)
  47.           {
  48.                UPIER.UORQ = 1 // clear UORQ
  49.                // Handle UORQ...
  50.           }
  51.           if (interrupt_status.DPEQ)
  52.           {
  53.                UPIER.DPEQ = 1 // clear DPEQ
  54.                // Handle DPEQ...
  55.           }
  56.           // loop again if any interrupts are left
  57.           interrupt_status = UPIER
  58.      } // end of while
  59.      // write end of interrupt vector to allow future calls
  60.      UPEOI = 0
  61. } // end of function
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-23 15:50 , Processed in 0.111618 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.