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

📄 swi.c

📁 嵌入式操作系统 arm-ucos2041
💻 C
字号:
/*
*********************************************************************************************************
* 文件: SWI.C
* 描述: SWI 中断 C 语言服务函数部分,通过 SWIISR.S中调用,大部分软件中断在此处理.
* 编写: 深思 (001-12345@sohu.com).
*********************************************************************************************************
*/

/*
*********************************************************************************************************
* 已分配软中断号:
*      __swi(0x10) void OS_TASK_SW(void);                任务级任务切换函数.
*      __swi(0x11) void _OSStartHighRdy(void);           运行优先级最高的任务.
*      __swi(0x12) void OS_ENTER_CRITICAL(void);         关中断.
*      __swi(0x13) void OS_EXIT_CRITICAL(void);          开中断.
* 
* FLASH 与 RAM 中的程序分开调试的时候可以充分利用软件中断实现OS功能函数的调用.
*********************************************************************************************************
*/

#include "includes.h"

/*
*********************************************************************************************************
* 函数: void SWI_ISR(INT32U SWI_Num).
* 功能: 软中断异常处理程序,提供一些系统服务.
* 输入: 1. SWI_Num: 功能号.
*       2. Point:   实参指针.
*********************************************************************************************************
*/

void SWI_ISR(INT32U SWI_Num,INT32U *Point)
{
    switch (SWI_Num) {
        case 0x0012:                                    /* OS_ENTER_CRITICAL 关中断.    */
            __asm{
                MRS     R3, SPSR
                ORR     R3, R3, #(1<<7)
                MSR     SPSR_c, R3
            }
            ++OsEnterSum;
            break;
        case 0x0013:                                    /* OS_EXIT_CRITICAL 开中断.     */
            if (--OsEnterSum == 0) {
                __asm{
                    MRS     R3, SPSR
                    BICEQ   R3, R3, #(1<<7)
                    MSREQ   SPSR_c, R3
                }
            }
            break;
        default:
            break;
    }
}

/*
********************************************************************************************************
* End.
********************************************************************************************************
*/

⌨️ 快捷键说明

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