您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 【已解决】[求助]BF512的软中断如何使用
本帖共有551个阅读者
发表帖子 发表投票 回复主题
【已解决】[求助]BF512的软中断如何使用
webom2008(论坛新手)
webom2008
头衔:社区公民
帮派:无帮无派
帖数:22
金钱:287
积分:29
注册时间:2013/9/9
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
【已解决】[求助]BF512的软中断如何使用
我想用系统软中断。但是不知如何使用。
简略代码如下:
1.中断初始化

    ADI_INT_RESULT result;
    result = adi_int_CECHook( IVG14,
                     UserInterruptFunc,
                     (void *)0x0000000F,
                     TRUE);
    if (ADI_INT_RESULT_SUCCESS == result)
    {
        printf("\r\n>>ADI_INT_RESULT_SUCCESS");
    }
    else
    {
        printf("\r\n>>error");
    }
2.软中断函数的实现
static ADI_INT_HANDLER_RESULT UserInterruptFunc(void *ClientHandle)
{
    static u32 count;
    printf("\r\nUserInterruptFunc %d", count++);
return (ADI_INT_RESULT_PROCESSED);
}

3.软中断的触发
在一个2ms定时器中断里面,添加如下:
        if (timer2_count++ >= (1000/2))//1s
        {
            timer2_count = 0;
            raise(IVG14);
        }
本意想1s中,运行一次UserInterruptFunc。

但是,结果一直没有运行软中断函数UserInterruptFunc!!!

对软中断如何正确使用,有哪位成功使用过,求教~~

备注:
1.中断初始化成功,可以打印printf("\r\n>>ADI_INT_RESULT_SUCCESS");
2.raise的使用是否正确使用?
3.在程序最先运行已经初始化了中断服务。adi_int_Init


「该帖子被 webom2008 在 2014-09-22 09:53:51 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/9/22 9:50:51
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
ADI的库函数我没用过,我习惯直接对寄存器配置操作。你说的软中断我也不知道是什么,能否具体一下中断的模块名称。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/9/24 21:11:12
webom2008(论坛新手)
webom2008
头衔:社区公民
帮派:无帮无派
帖数:22
金钱:287
积分:29
注册时间:2013/9/9
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
楼主的程序可以正常运行了。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/11/20 21:19:11
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159167 Call, 1 Queries, Processed in 0.062500 second(s),