目前、gcc 允许将函数属性为中断。
当添加为属性时、我希望看到具有以下规范的附加修饰符标记:
必须伴随一个"中断"标签
-不要使用正常的 RETI 返回、而是使用 RET
我提出此请求的动机是减少禁用中断时所花费的时钟周期数。
当我写入中断处理程序时、我访问敏感位(如 TA0CCR1)、然后快速重新启用中断、以允许其他时间敏感的进程继续。
然后、我执行需要执行的任何操作、并从函数中执行 RETI。
但是、目前如果我有一个中断函数、那么在我甚至可以访问时间敏感寄存器(如 TA0CCR1)之前、函数中被触摸的所有寄存器都被压入堆栈
我要做的是将我的中断处理程序拆分为两个函数:
-一个立即处理程序(在堆栈上推入极少或没有寄存器)、用于处理时间敏感的东西并重新启用中断
立即 处理程序(使用调用)调用的后续函数(标记为"interrupt"和新属性)、然后将堆栈上需要的任何寄存器入栈并使用 RET 返回
在使用 ASM "br ADDR"指令之前,我曾遇到过类似的行为,但我认为这样做会更干净。
同样、我希望、如果中断函数在栈上不按任何参数并调用另一个中断函数、这将简化为仅使用"br"指令。