1

帖子

0

TA的资源

一粒金砂(初级)

21
 
是的我也这么想,是定义好的!!呵呵

不是那样加载吗。。。。。我就是用的那个WinCE驱动调试助手.exe 加载的!!!
那怎么弄啊,大哥!!!!
我是MM 不是。。。大哥(*^__^*)

回复

1

帖子

0

TA的资源

一粒金砂(初级)

22
 
引用 19 楼 gooogleman 的回复:
楼主使用应用动态加载驱动?

涉及中断的驱动用软件加载要小心,一定要在推出的时候卸载中断才行的。


加载都没成功能,咋推出呀。。。。555555
加载就失败提示,googleman ~~SOS
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

23
 
引用 20 楼 september_119 的回复:
是的我也这么想,是定义好的!!呵呵

不是那样加载吗。。。。。我就是用的那个WinCE驱动调试助手.exe 加载的!!!
那怎么弄啊,大哥!!!!
我是MM 不是。。。大哥(*^__^*)


晕,你连加载都加载不了,那先加载成功再说吧。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

24
 
引用 18 楼 wangxin_801115 的回复:
引用 15 楼 september_119 的回复:
引用 12 楼 gooogleman 的回复:
广告无孔不入。


还有? g_TIMER2Irq = IRQ_TIMER2;
这句我写的,IR1_TIMER2这个值是不是在s3c2410x_intr.h文件里都是定义好的,我确认下!!这个也是我估计的。。。
你快帮帮我啊~~·有没例程~~

当然定义好的
不定义好编译器能让你过吗
估计你的BSP对TIME2的ISR已经处理好了
你只需要做IST,还有你得把你的驱动正确加载啊大哥


我不知道处理好没啊,只是编译通过而已!!!!
怎么办怎么办~~~~~~~~~~~~~~~
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

25
 
引用 22 楼 gooogleman 的回复:
引用 20 楼 september_119 的回复:
是的我也这么想,是定义好的!!呵呵

不是那样加载吗。。。。。我就是用的那个WinCE驱动调试助手.exe 加载的!!!
那怎么弄啊,大哥!!!!
我是MM 不是。。。大哥(*^__^*)


晕,你连加载都加载不了,那先加载成功再说吧。

就是成功不了,才问啊!!!!!为啥不成功呢?????
我真的搞不懂,提示不成功 但是端口已经 有脉冲方波出来了
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

26
 
是不是timer2其他地方用了
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

27
 
引用 24 楼 september_119 的回复:
引用 22 楼 gooogleman 的回复:
引用 20 楼 september_119 的回复:
是的我也这么想,是定义好的!!呵呵

不是那样加载吗。。。。。我就是用的那个WinCE驱动调试助手.exe 加载的!!!
那怎么弄啊,大哥!!!!
我是MM 不是。。。大哥(*^__^*)


晕,你连加载都加载不了,那先加载成功再说吧。

就是成功不了,才问啊!!!!!为啥不成功呢?????
我真的搞不懂,提示不成功 但是端口已经 有脉冲方波出来了

建议找人要个能加载的先看别人怎么弄的再继续吧。。。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

28
 
引用 24 楼 september_119 的回复:
引用 22 楼 gooogleman 的回复:
引用 20 楼 september_119 的回复:
是的我也这么想,是定义好的!!呵呵

不是那样加载吗。。。。。我就是用的那个WinCE驱动调试助手.exe 加载的!!!
那怎么弄啊,大哥!!!!
我是MM 不是。。。大哥(*^__^*)


晕,你连加载都加载不了,那先加载成功再说吧。

就是成功不了,才问啊!!!!!为啥不成功呢?????
我真的搞不懂,提示不成功 但是端口已经 有脉冲方波出来了

我的可以使用,呵呵,0.2ms定时
其他的都不要去管,先把驱动加载成功再说。驱动加载不成功应该是你的bib文件或者注册表文件和你的驱动文件名称等等,,,,,之间没有联系好导致的。看看吧。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

29
 
吧定时器改成定时器1试试,我用的定时器1,定时器4好像已经被wince使用过了
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

30
 
引用 27 楼 jiereliyi 的回复:
引用 24 楼 september_119 的回复:
引用 22 楼 gooogleman 的回复:
引用 20 楼 september_119 的回复:
是的我也这么想,是定义好的!!呵呵

不是那样加载吗。。。。。我就是用的那个WinCE驱动调试助手.exe 加载的!!!
那怎么弄啊,大哥!!!!
我是MM 不是。。。大哥(*^__^*)


晕,你连加载都加载不了,那先加载成功再说吧。

就是成功不了,才问啊!!!!!为啥不成功呢?????
我真的搞不懂,提示不成功 但是端口已经 有脉冲方波出来了

我的可以使用,呵呵,0.2ms定时
其他的都不要去管,先把驱动加载成功再说。驱动加载不成功应该是你的bib文件或者注册表文件和你的驱动文件名称等等,,,,,之间没有联系好导致的。看看吧。



你成功了么??5555555555
你给我看看呢~~~~~我还想定时0.6MS呢,,,,,帮帮我好不好啊!!!我也不知道哪里不对~~~~
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

31
 
#include
#include
#include "nkintr.h"

#include "pkfuncs.h"
#include  "s3c2440a_intr.h"
#include "s3c2440a_base_regs.h"
#include "s3c2440a_ioport.h"
#include "s3c2440a_pwm.h"
//#include "oal_io.h"

#define BUFSIZE 256
static DWORD INTIrq  = IRQ_TIMER1;        // Determined by SMDK2410 board layout.
static DWORD INTIntr = SYSINTR_UNDEFINED;
volatile S3C2440A_IOPORT_REG  *v_pIOPregs;
volatile S3C2440A_PWM_REG     *v_pPWMregs;
volatile S3C2440A_INTR_REG    *v_pINTregs;
static HANDLE Timer_Event;
static HANDLE Timer_Thread;
int i1 = 0;
int dat = 1;
WCHAR achBuffer[BUFSIZE];

BOOL WINAPI
DllEntryPoint(HANDLE hinstDLL,
                                DWORD dwReason,
                                LPVOID lpvReserved)
{
        switch (dwReason)
        {
        case DLL_PROCESS_ATTACH:
         RETAILMSG(1,(TEXT("timer:::::*******DLL_PROCESS_ATTACH******\n")));
         break;
        case DLL_THREAD_ATTACH:
         RETAILMSG(1,(TEXT("timer:::::******DLL_THREAD_ATTACH*******\n")));
         break;
        case DLL_THREAD_DETACH:
         RETAILMSG(1,(TEXT("timer:::::******DLL_THREAD_DETACH******\n")));
         break;
        case DLL_PROCESS_DETACH:
        RETAILMSG(1,(TEXT("timer:::::******DLL_PROCESS_DETACH******\n")));
        break;
        }
     return true;
}

BOOL TimerINTInit()
{
        RETAILMSG(1,(TEXT("timer1::::**********KeyInt_Setting***********\r\n")));
        //GPIO
        v_pIOPregs->GPGCON  &=~(0x3<<(2*8));   //set led port
        v_pIOPregs->GPGCON  |= (0x2<<(2*8));
        //INTR
        v_pINTregs->INTMSK  &=~(0x00000001<<11); //0 打开timer1 中断
        v_pINTregs->INTMOD        &=~(0x00000001<<11); //0 timer1 irq中断
       
        //Timer2
        v_pPWMregs->TCNTB1  = 0x00004e20;
        v_pPWMregs->TCMPB1  = 0x00000000;
//        v_pPWMregs->TCFG0  
        v_pPWMregs->TCFG1         &= 0xff0fff0f;  //timer1 2分频
        v_pPWMregs->TCON        |=(0x00000001<<9);  //手动更新
        v_pPWMregs->TCON        |=(0x00000001<<11); //自动装载

        v_pPWMregs->TCON        |=(0x00000001<<8);        //启动
        v_pPWMregs->TCON        &=~(0x00000001<<9); //清手动更新
       
        return TRUE;
}


void InitializeAddresses()
{

    ///////////////////GPIO
        v_pIOPregs = (volatile  S3C2440A_IOPORT_REG  *) VirtualAlloc(0,sizeof(S3C2440A_IOPORT_REG),MEM_RESERVE, PAGE_NOACCESS);
        if(v_pIOPregs == NULL)
        {
                RETAILMSG(1,(TEXT("timer1::::For S2440IOP: VirtualAlloc v_pIOPregs failed!\r\n")));
        }
        else
        {
                RETAILMSG(1,(TEXT("timer1:::: :v_pIOPregs == %d\r\n"),v_pIOPregs));
                if(!VirtualCopy((PVOID)v_pIOPregs,(PVOID)(S3C2440A_BASE_REG_PA_IOPORT>>8),sizeof(S3C2440A_IOPORT_REG),PAGE_PHYSICAL|PAGE_READWRITE|PAGE_NOCACHE ))
                {
                        RETAILMSG(1,(TEXT("timer1::::For S2440IOP: VirtualCopy  v_pIOPregs failed!\r\n")));
                }
        }
        ////////////////////PWM
        v_pPWMregs = (volatile  S3C2440A_PWM_REG  *) VirtualAlloc(0,sizeof(S3C2440A_PWM_REG),MEM_RESERVE, PAGE_NOACCESS);
        if(v_pPWMregs == NULL)
        {
                RETAILMSG(1,(TEXT("timer1::::For S2440IOP: VirtualAlloc v_pPWMregs failed!\r\n")));
        }
        else
        {
                RETAILMSG(1,(TEXT("timer1:::: :v_pPWMregs == %d\r\n"),v_pPWMregs));
                if(!VirtualCopy((PVOID)v_pPWMregs,(PVOID)(S3C2440A_BASE_REG_PA_PWM>>8),sizeof(S3C2440A_PWM_REG),PAGE_PHYSICAL|PAGE_READWRITE|PAGE_NOCACHE ))
                {
                        RETAILMSG(1,(TEXT("timer1::::For S2440IOP: VirtualCopy v_pPWMregs failed!\r\n")));
                }
        }
        ////////////////////INTR
        v_pINTregs = (volatile  S3C2440A_INTR_REG  *) VirtualAlloc(0,sizeof(S3C2440A_INTR_REG),MEM_RESERVE, PAGE_NOACCESS);
        if(v_pINTregs == NULL)
        {
                RETAILMSG(1,(TEXT("timer1::::For S2440IOP: VirtualAlloc v_pINTregs failed!\r\n")));
        }
        else
        {
                RETAILMSG(1,(TEXT("timer1:::: :v_pINTregs == %d\r\n"),v_pINTregs));
                if(!VirtualCopy((PVOID)v_pINTregs,(PVOID)(S3C2440A_BASE_REG_PA_INTR>>8),sizeof(S3C2440A_INTR_REG),PAGE_PHYSICAL|PAGE_READWRITE|PAGE_NOCACHE ))
                {
                        RETAILMSG(1,(TEXT("timer1::::For S2440IOP: VirtualCopy v_pINTregs failed!\r\n")));
                }
        }
       
}

static DWORD Timer1_Thread_Fun()
{

        while(1)
        {
                WaitForSingleObject(Timer_Event,INFINITE);
                RETAILMSG(1,(TEXT("timer1::::Thread id running :times == %d\r\n"),i1));
                i1++;
                if(dat==1)
                {
                        v_pIOPregs->GPGDAT |= 0x0100;
                        dat = 0;
                }
                else
                {
                        v_pIOPregs->GPGDAT &=0xfeff;
                        dat =1;
                }
        //        v_pINTregs->INTPND        |=(0x00000001<<11);  //
        //        v_pINTregs->SRCPND        &=~(0x00000001<<11);  //
                InterruptDone(INTIntr);
        }
}


//char achBuffer[sizeof(WCHAR)];
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

        InitializeAddresses();
        TimerINTInit();

        RETAILMSG(1,(TEXT("timer1::::before CreateThread \r\n")));
        Timer_Thread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)Timer1_Thread_Fun,0,0,&IDINTThread);
        if(!Timer_Thread)
        {
                RETAILMSG(1,(TEXT("timer1::::CreateThread  faile \r\n")));
                return FALSE;
        }
        else
        {
                RETAILMSG(1,(TEXT("timer1::::CreateThread  OK \r\n")));
        }
        Timer_Event = CreateEvent(NULL,false,false,NULL);
        if(!Timer_Event)
        {
                RETAILMSG(1,(TEXT("timer1::::CreateEvent  faile \r\n")));
                return FALSE;
        }
        else
        {
                RETAILMSG(1,(TEXT("timer1::::CreateEvent  OK \r\n")));
        }
       
        if(!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR,&INTIrq,sizeof(INTIrq),&INTIntr,sizeof(INTIntr),NULL))
        {
                RETAILMSG(1,(TEXT("timer1::::ERROR:kerneliocontrol.\r\n")));
                return(FALSE);
        }
        else
        {
                RETAILMSG(1,(TEXT("timer1::::KernelioControl OK\r\n")));
        }

        if(!InterruptInitialize(INTIntr,Timer_Event,NULL,0))
        {
                RETAILMSG(1,(TEXT("timer1::::Interruptinitialize failed \r\n")));
                return FALSE;
        }
        else
        {
                RETAILMSG(1,(TEXT("timer1::::Interruptinitialize OK \r\n")));
        }
       
        return TRUE;

}

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

32
 
引用 2 楼 september_119 的回复:
引用 1 楼 faked 的回复:
No irq for timer triggered in OEMInterruptHandler()?
Have you enabled this

OEMInterruptHandler()里面要加使能吗?
这个是动态申请也要修改OEMInterruptHandler(),OEMInterruptEnable(),OEMInterruptDone()ma ?
我没有在这里进行添加程序、、、

我也没加
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

33
 
引用 31 楼 jiereliyi 的回复:
引用 2 楼 september_119 的回复:
引用 1 楼 faked 的回复:
No irq for timer triggered in OEMInterruptHandler()?
Have you enabled this

OEMInterruptHandler()里面要加使能吗?
这个是动态申请也要修改OEMInterruptHandler(),OEMInterruptEnable(),OEMInterruptDone()ma ?
我没有在这里进行添加程序、、、

我也没加


谢谢你~~咸蛋超人~~~太感谢你了~~~我在看你的程序!!!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

34
 
引用 32 楼 september_119 的回复:
谢谢你~~咸蛋超人~~~太感谢你了~~~我在看你的程序!!!

是动感超人 !!!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

35
 
天啦...说了一大通..只怕是越说越迷糊吧....

驱动加载不成功,,先在INIT里面加打印,看看是哪里出错了。.

中断不产生,,看看系统中断管理里面有没有管理你的中断.否则是不会给你返回SYSINTR的..

另外就是看看是不是有冲突..系统一般会使用TIMER...寄存器有没有被其他驱动改掉....

可能出问题的地方太多了。..还不去老老实实去检查....
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

36
 
引用 33 楼 jiereliyi 的回复:
引用 32 楼 september_119 的回复:
谢谢你~~咸蛋超人~~~太感谢你了~~~我在看你的程序!!!

是动感超人 !!!


超人不行啊。。。。我加载还是失败。。。。为什么 ~~~~~~~~
你就只用了.c文件,没有修改其他的东西吧???
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

37
 
引用 34 楼 foliage_chiu 的回复:
天啦...说了一大通..只怕是越说越迷糊吧....

驱动加载不成功,,先在INIT里面加打印,看看是哪里出错了。.

中断不产生,,看看系统中断管理里面有没有管理你的中断.否则是不会给你返回SYSINTR的..

另外就是看看是不是有冲突..系统一般会使用TIMER...寄存器有没有被其他驱动改掉....

可能出问题的地方太多了。..还不去老老实实去检查....


如何查看 系统中断管理。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

38
 
引用 35 楼 september_119 的回复:
引用 33 楼 jiereliyi 的回复:
引用 32 楼 september_119 的回复:
谢谢你~~咸蛋超人~~~太感谢你了~~~我在看你的程序!!!

是动感超人 !!!


超人不行啊。。。。我加载还是失败。。。。为什么 ~~~~~~~~
你就只用了.c文件,没有修改其他的东西吧???


当然要改,bib ,reg ,文件了
驱动加载不成功,,先在INIT里面加打印,看看是哪里出错了。.
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

39
 
引用 37 楼 jiereliyi 的回复:
引用 35 楼 september_119 的回复:
引用 33 楼 jiereliyi 的回复:
引用 32 楼 september_119 的回复:
谢谢你~~咸蛋超人~~~太感谢你了~~~我在看你的程序!!!

是动感超人 !!!


超人不行啊。。。。我加载还是失败。。。。为什么 ~~~~~~~~
你就只用了.c文件,没有修改其他的东西吧???


当然要改,bib ,reg ,文件了
驱动加载不成功,,先在INIT里面加打印,看看是哪里出错了。.

我加了打印。。。可是我不会看啊。。。。能不能跟我私聊,超人
我改了.reg,可是我动态加载应该不用改bib文件啊,你帮我看看好不好!!我给你看我的,拜托你了列
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

40
 
呦呵!
   美女撒娇了
   超人你内裤外穿了吗?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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