Part Number:TMS320F2812
有一个最高优先级的中断程序任务1, 任务1由定时器中断开启;
有一个次高优先级的中断程序任务2;
还有N多任务在在主循环中执行.
要求每执行128次任务1后, 开启任务2, 并且任务2在执行过程中能被任务1中断, 因为执行一次任务2的期间任务1可能被唤醒.
目前我是把任务2放在了第128次任务1的尾部, 在同一个中断函数中, 问题是任务2计算时间太长导致任务1错过, 因为是同个中断职数.
如何把任务2放到一个比任务1优先级低的中断函数中, 在任务1的第128次执行完后唤醒此中断函数?
看了<<spru430f.pdf>>中关于TRAP INTR介绍, INTR指令照PDF文档中使用, 在C语言中以下两种方法使用编译都报错:
// asm("intr INT1");
// INTR INT1;
另外看了TRAP 指令的介绍, 好像是不能被中断的
Ben Qin:
你好,默认情况下,中断时GIE也就是总中断开关是关闭的,此时再次无法触发中断,也就是中断嵌套。
根据你的描述,我认为你可以尝试在第128次循环中开启总中断,此时任务2可以运行。
,
fw yang:
你说的这些我知道, 默认是关闭的.
我的问题是怎么软件启动一个中断, 中断还需要可以被高优先级中断, 软件中断好像是不可被高优先级中断的
,
Ben Qin:
如果是直接修改相应的中断标志位应该是能被高优先级中断
,
fw yang:
我看了一下中断标志位是只读的, 不能修改
有没有TRAP INTR 指令使用说明 例程 我看了相关手册说明很简单
,
Ben Qin:
fw yang said:有没有TRAP INTR 指令使用说明 例程
使用说明就是你在开始提到的文件以及datasheet中也有一些。
例程这边官方是没有提供的。需要您参考资料来配置。
您可以参考下下面几篇帖子:
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/903788/ccs-tms320f28388d-using-watchdog-interupt-in-sys-bios-project
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/21610/tms320f2812-default-isrs-best-practices
e2e.ti.com/…/software-and-user-interrupts-on-f2802x