STC单片机开发之面向对象开发_04_第一个STC中断程序
继上节开发STC程序,本节介绍如何写中断程序。在创建项目后,sdk会默认设置计数器0作为计时器。本节就拿计数器0中断作为示例,详细介绍如何开发中断。通过查STC32G12K手册,计数器0的中断向量地址为0x000B。sdk以中断向量n作为索引,INT0中断的向量为0,计数器0中断的向量为1,其他中断依次类推。比如INT1中断向量为2,计数器1中断向量为3。
打开项目中程序InterEnter,其代码如下:
package yxra.interrupt;
/**
* 中断入口
*/
public class InterEnter{
//进入中断程序
private static void enterInterrupt(){
protectScence();
handleInterrupt();
restoreScence();
}
//中断程序处理
private static void handleInterrupt(){
//获取中断号
int interNo=getInterruptNo();
//中断事件处理
switch(interNo){
case 0x01:
Timer.setTimerDida();
InterTimer.handleTimerEvent();
}
}
//中断程序处理
private static int getInterruptNo(){
return 0;
}
//保护现场
private static void protectScence(){
}
//恢复现场
private static void restoreScence(){
}
}
下面对各方法予以说明:
enterInterrupt():进入中断处理程序,这个方法先保护现场,调用中断,恢复现场
handleInterrupt():为处理中断的具体实现。
getInterruptNo():获取当前中断号,当发生中断时,由系统将中断号写入,用此方法获取。
protectScence():保护现场,主要是保护相关的寄存器
restoreScence():恢复现场,按保护的反顺序弹出寄存器值
对于初学者以上代码保持不变,直接调整计数器0的中断处理程序InterTimer.handleTimerEvent();
打开InterTimer程序,会发现handleTimerEvent()方法中无代码,即计数器0中断啥也没做。在这个方法中添加相应的业务逻辑即可。
比如设置P0=0xFF,代码如下:
GPIO.setGPIOValue(0,0xFF);
页:
[1]