SYSBIOS学习笔记---硬件中断(HWI)的创建
2019-07-13 11:46发布
生成海报
在进行嵌入式开发的时候,我们会根据不同的需求来决定是否使用操作系统,以及使用什么样的操作系统,在ARM嵌入式开发中大家常用Linux操作系统来进行系统的开发;而在DSP嵌入式开发中,尤其是TI的DSP,在早期的时候由于处理器的性能相对的弱一些,资源也相对较少,这时为了满足实时性的要求,一般是跑裸机程序。随着TI的DSP处理器的性能越来越强大,资源也越来越多,为了把开发人员从繁重的底层驱动开发解放出来,TI随即推出了SYSBIOS实时操作系统,该操作系统目前已经支持TI的全系列DSP。
今天笔者就来和大家一起来分享一下关于SYSBIOS中硬件中断(HWI)的创建,硬件中断的创建有两种方式,一种是静态的创建,另一种是动态的创建。所谓静态的创建就是使用CCS下cfg图形配置界面进行配置,或者使用cfg Script脚本语言来进行配置,前者配置比较耗电脑系统资源,会出现卡顿的现象;后者占用的系统资源非常的少,不会出现卡顿的现象。当然一般情况我们使用前者就可以了。下面是一个典型的HWI图形配置界面。
其各项参数解释如下:
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");
}
该程序实现的功能和上述使用静态的方式是一样的。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮