SYSBIOS学习笔记---硬件中断(HWI)的创建

       在进行嵌入式开发的时候,我们会根据不同的需求来决定是否使用操作系统,以及使用什么样的操作系统,在ARM嵌入式开发中大家常用Linux操作系统来进行系统的开发;而在DSP嵌入式开发中,尤其是TI的DSP,在早期的时候由于处理器的性能相对的弱一些,资源也相对较少,这时为了满足实时性的要求,一般是跑裸机程序。随着TI的DSP处理器的性能越来越强大,资源也越来越多,为了把开发人员从繁重的底层驱动开发解放出来,TI随即推出了SYSBIOS实时操作系统,该操作系统目前已经支持TI的全系列DSP。

       今天笔者就来和大家一起来分享一下关于SYSBIOS中硬件中断(HWI)的创建,硬件中断的创建有两种方式,一种是静态的创建,另一种是动态的创建。所谓静态的创建就是使用CCS下cfg图形配置界面进行配置,或者使用cfg Script脚本语言来进行配置,前者配置比较耗电脑系统资源,会出现卡顿的现象;后者占用的系统资源非常的少,不会出现卡顿的现象。当然一般情况我们使用前者就可以了。下面是一个典型的HWI图形配置界面。

SYSBIOS学习笔记---硬件中断(HWI)的创建_第1张图片

其各项参数解释如下:

Handle:当前硬件中断的句柄,此项参数在这里没有具体的作用,但如果是软件中断的话,该参数会被用于发布一个具体的软件中断。

ISR function:中断服务函数,此项参数填写你要执行的中断函数的函数名。

Interrupt number:中断号,指定该硬件中断由哪个CPU可屏蔽硬件中断响应,该中断号的取值需要更具具体的器件来确定。我在这里用的是c6657,它的值是4到15。

Argument passed to ISR function:传递到中断服务函数的参数,如果没有就填写为0,在这里没有参数,所以填写为0。

Event Id:事件ID,即系统事件的的编号,这个得根据具体的要求查阅相关手册,我在这里响应的是外部按键的中断,查阅手册得知事件的ID是91,因此填写的是91。

Masking options:屏蔽选项,有MaskingOption_NONE、MaskingOption_ALL、MaskingOption_SELF、MaskingOption_BITMASK、MaskingOption_LOWER。这里选择的是MaskingOption_SELF,也就是在响应中断是时候自身的中断事件又来了这时不会去响应。


所谓的动态配置是指在程序中调用相应的API函数来配置,这样就可以在程序的运行中有选择的进行配置,这样可以减少系统的资源消耗,下面是一个典型的配置程序代码:

 // 动态创建硬件中断
    Hwi_Handle hwi0;
    Hwi_Params hwiParams;
    Error_Block eb;

    // 初始化错误块
    Error_init(&eb);

    // 使用默认值初始化参数
    Hwi_Params_init(&hwiParams);
    // 中断事件
	hwiParams.eventId = 91;
    // 传递到中断服务函数的参数
    hwiParams.arg = 0;
    // 不允许该中断自身嵌套
    hwiParams.maskSetting = Hwi_MaskingOption_SELF;
    // 使能中断
    hwiParams.enableInt = TRUE;
    // 可屏蔽中断 4
    hwi0 = Hwi_create(4, USER0KEYIsr, &hwiParams, &eb);
    /**/
    if(hwi0 == NULL)
    {
    	System_abort("Hwi1 create failed");
    }
该程序实现的功能和上述使用静态的方式是一样的。










你可能感兴趣的:(SYSBIOS学习笔记---硬件中断(HWI)的创建)