TC275-中断

因在TIM寄存器TIEM模式下用到中断,因此学习TC275中断的工作过程。

中断处理函数,该函数调用三个 参数,后两个分别为中断服务者CPU0和中断优先级。调用中断向量表只需要优先级就可以了,可以直接地址偏移得到中断入口。第一个参数就不是我们之前说的地址空间了,事实上该参数调用的是中断服务函数。

IFX_INTERRUPT(STM_Int0Handler, 0, ISR_PRIORITY_STM_INT0);

中断代码如下:

IFX_INTERRUPT(STM_Int0Handler, 0, ISR_PRIORITY_STM_INT0);
void STM_Int0Handler(void)
{
  boolean interruptState = IfxCpu_disableInterrupts();
  IfxStm_clearCompareFlag(g_Stm.stmSfr, g_Stm.stmConfig.comparator);
  
  // 100000000/1000, TimeConst_1s = stmFrq = 100 000 000
  IfxStm_increaseCompare(g_Stm.stmSfr, g_Stm.stmConfig.comparator, (100 *
    1000000*timerINT_us));
  IfxCpu_restoreInterrupts(interruptState);
  IfxCpu_enableInterrupts();
  rt_OneStep();
  g_Stm.counter++;
  if (g_Stm.counter > 2) {
    g_Stm.counter = 0;
  }
}

在中断系统中填写中断信息,且有额外的中断处理函数实现真正的中断处理。
直接在系统中断中进行中断处理时STM_Int0Handler是随便定义的。
额外定义中断函数,则函数名为系统中断函数的参数,可实现中断处理函数的调用。通过系统中断查到中断地址,然后直接跳转到额外定义的中断处理函数,占用系统中断的仅仅是查询,减少系统中断的调用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值