TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F2812: 怎么在程序中开启一个可被其他高优先级PIE级中断的中断函数

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

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F2812: 怎么在程序中开启一个可被其他高优先级PIE级中断的中断函数
分享到: 更多 (0)