⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vectors.c

📁 《嵌入式系统-使用HCS12微控制器的设计与应用》在CodeWarrior开发环境下的源程序。
💻 C
字号:
#include "includes.h"			//总头文件

//指向外部定义的消息邮箱的指针
extern OS_EVENT * Str_Box;

#pragma CODE_SEG __NEAR_SEG NON_BANKED 
//-------------------------------------------------------------------------*
//定时器中断函数,用来产生时钟节拍                                         *
//参数:无                                                                 *
//返回值:无                                                               *
//-------------------------------------------------------------------------*
__interrupt 16 void OSTickISR(void)  //16为定时中断
{  
    DisableInterrupts;               //关中断
    asm{      
        ldaa $30                     //把存储页面寄存器入栈
        psha
       }
    OSIntEnter();
    OS_SAVE_SP();
    //用户代码开始
    OSTimeTick();
    TFLG2 = 0x80;										 //清定时中断
    //用户代码结束
    OSIntExit();                     //退出中断,切换任务
    asm{      
        pula
        staa $30                     //恢复存储页面寄存器
        nop
        rti
       }
    EnableInterrupts;			           //开中断
}

//OSCtxSw:任务级任务切换函数-----------------------------------------------*
//功  能:当前运行的任务切换为比它优先级高的任务                            *
//参  数:无                                                                *
//返  回:无                                                                *
//-------------------------------------------------------------------------*
__interrupt 4 void OSCtxSw(void) 		//4为SWI中断
{ 
    DisableInterrupts;              //关中断
    asm{
        ldaa $30                    //保存页面寄存器
        psha
        ldX OSTCBCur
        STS 0,X
       }
    OSTaskSwHook();
    OSTCBCur = OSTCBHighRdy;
    OSPrioCur = OSPrioHighRdy;
    asm{  
        ldX OSTCBCur
        LDS 0,X
        pula
        staa $30
        RTI  
       }
    EnableInterrupts;			          //开中断    
}
								
//ISR_SCIRe:SCI0串行接收中断处理程序---------------------------------------*
//功  能:利用SCI0接收中断,接收一个字节数据,将该数据放入消息邮箱            *
//参  数:Str_Box为指向消息邮箱的指针                                       *
//返  回:无                                                                *
//调用函数:OSMboxPost发送消息邮箱                                          *
//         SCIReN串行接收N字节数据                                         *
//-------------------------------------------------------------------------*
__interrupt 20 void ISR_SCIRe(void)	 //20为SCI0接收中断
{        
    INT8U i;    
    INT8U SerialBuff[1];             //存放接收数据的数组    
    DisableInterrupts;               //关中断    
    i = SCIReN(1,SerialBuff);        //等待接收1个数据    
    //该数据放入消息邮箱
    if(i == 0) 
    {
      SCISendN(1,SerialBuff);
      OSMboxPost(Str_Box,SerialBuff);   
    }
    EnableInterrupts;			           //开中断
 }
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -