2676|6

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

嘿嘿~~定时器中断~是我呀帮我再看看吧~大家快来 [复制链接]

上次发的帖子,大家可能以为我放弃了或者已经不在弄了~~~~~
非常感谢大家的帮助~~~因为一直很忙也没结贴~~感谢googleman ,咸蛋超人,and wangxin_801115,还有其他进来回帖的大家~~~
呵呵~~~但是现在还没弄出来啊~~~中断还是进不了,但是比之前有进步了申请初始化都成功了,,麻烦再帮我看看吧 贴出串口输出 大家帮我看看吧~~~~
我用的静态申请方法~~~
贴出部分涉及到中断的程序:
static DWORD Timer3_Thread_Fun()
{

        while(1)
        {
                WaitForSingleObject(TimerEvent,INFINITE);
                   RETAILMSG(1,(TEXT("timer3::::Thread is running :times == %d\r\n"),i1));
                RETAILMSG(1,(TEXT("before i1++\r\n"),i1));
                  i1++;
                RETAILMSG(1,(TEXT("after i1++\r\n"),i1));
                if(dat==0)
                {   
                        RETAILMSG(1,(TEXT("timer3::::before led light\r\n")));
                        v_pIOPregs->rGPFDAT &= 0xBF; //GPF6>>LED3亮
                RETAILMSG(1,(TEXT("timer3::::after led light\r\n")));
                        dat=1;
                }
                else
                {
                        RETAILMSG(1,(TEXT("timer3::::before led unlight\r\n")));
                        v_pIOPregs->rGPFDAT |= 0x40; //GPF6>>LED3灭
            dat=0;
                }
        }

    InterruptDone(SYSINTR_TIMER3);
}
**********************************************************************************************
DWORD TIM_Init(DWORD dwContext)
{ // if you drive a idiographic device,add oter code ep: int,hardwareinit and so on
DWORD  IDINTThread;
RETAILMSG(1,(TEXT("timer:::::*********InitKey_Init***********\n")));
//clear the ram which is used for this dll

TimerINTInit();

RETAILMSG(1,(TEXT("timer3::::before CreateThread \r\n")));
TimerThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)Timer3_Thread_Fun,0,0,&IDINTThread); if(!TimerThread)
{
        RETAILMSG(1,(TEXT("timer3::::CreateThread  faile \r\n")));
        return FALSE;
}
else
{
        RETAILMSG(1,(TEXT("timer3::::CreateThread  OK \r\n")));
}

TimerEvent = CreateEvent(NULL,false,false,NULL);
if(!TimerEvent)
{
        RETAILMSG(1,(TEXT("timer3::::CreateEvent  faile \r\n")));
        return FALSE;
}
else
{
        RETAILMSG(1,(TEXT("timer3::::CreateEvent  OK \r\n")));
}

if(!InterruptInitialize(SYSINTR_TIMER3,TimerEvent,NULL,0))
{
        RETAILMSG(1,(TEXT("timer3::::Interruptinitialize failed \r\n")));
        return FALSE;
}
else
{
        RETAILMSG(1,(TEXT("timer3::::Interruptinitialize OK \r\n")));
}

return TRUE;

}

******************************************************************************************

串口输出

TIMER_INTR: DLL_PROCESS_ATTACH
timer:::::*********InitKey_Init***********
timer3::::**********TimerInt_Setting***********
timer3::::before CreateThread
timer3::::CreateThread  OK
timer3::::CreateEvent  OK
timer3::::Interruptinitialize OK
TIMER_INTR: DLL_THREAD_ATTACH
timer3::::before led light
Data Abort: Thread=8f86f180 Proc=8dda6160 'device.exe'
AKY=00000005 PC=01d31860(timer_int.dll+0x00001860) RA=01d3185c(timer_int.dll+0x0000185c) BVA=b1600054 FSR=0000000d
TIMER_INTR: DLL_THREAD_DETACH
Platform Type : S3C2440 multi-platform
MYSTRINGS:TIM_Open
MYSTRINGS:TIM_Write

最新回复

就是最后加了释放 BOOL TIM_Deinit(DWORD hDeviceContext) { //it's a opposition to init BOOL bRet=TRUE; RETAILMSG(1,(TEXT("timer:::::********InitTimer_Deinit************\n"))); InterruptDisable(SYSINTR_TIMER3); CloseHandle(TimerThread); VirtualFree((void*)v_pIOPregs, sizeof(IOPreg), MEM_RELEASE); VirtualFree((void*)v_pPWMPregs, sizeof(INTreg), MEM_RELEASE); VirtualFree((void*)v_pINTPregs, sizeof(PWMreg), MEM_RELEASE);        return bRet; }  详情 回复 发表于 2010-3-8 14:59
点赞 关注

回复
举报

54

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
MARK
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
帮顶下!

MARK,学习。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
问题已解决~~谢谢关注~~~
是内存申请与释放的问题:)
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
呵呵恭喜,来晚了
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

6
 
具体说说怎么回事,你改哪里,改好的
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 5 楼 jiereliyi 的回复:
具体说说怎么回事,你改哪里,改好的


就是最后加了释放
BOOL TIM_Deinit(DWORD hDeviceContext)
{ //it's a opposition to init
BOOL bRet=TRUE;
RETAILMSG(1,(TEXT("timer:::::********InitTimer_Deinit************\n")));
InterruptDisable(SYSINTR_TIMER3);

CloseHandle(TimerThread);



VirtualFree((void*)v_pIOPregs, sizeof(IOPreg), MEM_RELEASE);

VirtualFree((void*)v_pPWMPregs, sizeof(INTreg), MEM_RELEASE);

VirtualFree((void*)v_pINTPregs, sizeof(PWMreg), MEM_RELEASE);

      

return bRet;
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表