Slavik
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-08-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1727回复:8

关于InterruptInitialize的问题,忘高手指教

楼主#
更多 发布于:2004-07-23 12:41
我调用InterruptInitialize后,在debug窗口看见他说要在INTERRUPTS_ON后启动。
然后我加入INTERRUPTS_ON()。但是编译通过后显示连接错误。我在文档里没有发现需要连接的lib文件。我看INTERRUPTS_ENABLE要Nk*.lib。但是我的sitang开发包里没有。如果要自己实现的话,是不是只要改中断屏蔽控制器就行了?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-23 23:08
nk.lib在$(_COMMONOAKROOT)\\lib\\$(_CPUDEPPATH)\,这个目录是bsp编译生成os时在public\\<YourPlatform>里面生成的。

我发现库里面本来是没有这个nk.lib,但是在利用bsp编译生成os时会在在public\\<YourPlatform>里面的xxx\cesysgen\oak里面生成,不知道是使用哪部分生成的这个库,那位兄弟知道,告知。

看来如果不能提前生成这个nk.lib那就自己写吧,不过还算好,基本上就控制cpu内部以为就可以了(很多cpu都可以),如果不能在cpu内部禁止再控制中断控制器的屏蔽寄存器吧
根据地的兄弟们,团结就是力量
Slavik
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-08-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-25 08:05
#include "stdafx.h"
#include <Pkfuncs.h>
#include <Nkintr.h>
#define INTR SYSINTR_TIMING
#define SIZE  (4800*4)
HANDLE hExit = NULL;
HANDLE hEvent = NULL;

void ShowError( LPTSTR message ) {
    static RECT rect = { 0, 0, 640, 15 };
static HDC hdc = GetDC(0);
DWORD error = GetLastError();
TCHAR lpMsgBuf[100];
wsprintf( lpMsgBuf, TEXT("%d\n"), error );
DrawText( hdc, lpMsgBuf, wcslen( lpMsgBuf ), &rect, DT_NOCLIP|DT_SINGLELINE );
rect.top += 15;
rect.bottom += 15;
OutputDebugString( message );
OutputDebugString( lpMsgBuf );
OutputDebugString( L"\n" );
}

DWORD WINAPI Timer( LPVOID param )
 {
int i = 0;
    while( i < 1000000 )
    {  
OutputDebugString( TEXT("Waiting\n") );
        WaitForSingleObject( hEvent, INFINITE );
//ResetEvent( hEvent );
OutputDebugString( TEXT("TIMMING\n") );
        InterruptDone(INTR);
i++;
    }

SetEvent( hExit );
    return 0;
}

int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR    lpCmdLine,
int       nCmdShow)
{
hExit = CreateEvent( NULL, TRUE, FALSE, NULL );
//HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
hEvent = CreateEvent( NULL, FALSE, FALSE, NULL );
if( hEvent == NULL ) {
ShowError( TEXT("CreateEvent Failed") );
return 0;
}
    InterruptDisable(INTR);
if( !InterruptInitialize(INTR, hEvent, NULL, (DWORD)NULL) ) {
ShowError( TEXT("InterruptIntialize Failed\n") );
return 0;
    }
    OutputDebugString( TEXT("Interrupt Initialized\n") );
HANDLE hThread = CreateThread(NULL, 0, Timer, NULL, 0, NULL );
if( hThread == NULL ) {
ShowError( TEXT("CreateThread Failed") );
return 0;
}

    WaitForSingleObject( hExit, INFINITE );
InterruptDisable(INTR);
CloseHandle( hEvent );
CloseHandle( hThread );
CloseHandle( hExit );
return 0;
}
为什么这段代码没有任何反映。
我不知道错在那里。
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-26 21:58
关中断处理完后把中断打开
根据地的兄弟们,团结就是力量
Slavik
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-08-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-26 22:22
是那个函数
INTERRUPTS_ON?
还是别的?
我导入Nk.lib之后就会出现连接错误,是和Core.lib冲突。
怎么办?
我都快急死了。
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-26 22:55
稳住稳住:)不要慌三,慢慢来,慢慢来,我们支持你!!!:)

你用InterruptDisable(INTR);关中断后没有开放它,换成INTERRUPTS_OFF来关,然后用INTERRUPTS_ON来开

这两个函数在nk.lib里面有,连接时加入nk.lib就行,但要注意nk.lib的目录:$(_COMMONOAKROOT)\\lib\\$(_CPUDEPPATH)\\nk.lib

core.lib?你自己生成的?是不是你的代码自己实现了interrupts_on这些函数?

兄弟加油
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-26 22:56
得走了,要关门的,明天再战!good luck
根据地的兄弟们,团结就是力量
Slavik
驱动牛犊
驱动牛犊
  • 注册日期2004-06-08
  • 最后登录2004-08-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-27 08:25
是coredll.lib
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-27 12:47
Nk.lib和coredll.lib冲突?怎么写的?
根据地的兄弟们,团结就是力量
游客

返回顶部