|
10
本帖最后由 shajiahuo 于 2013-4-15 15:32 编辑
本人刚刚接触TQ2440,想用GPG13和GPG14来做外扩IO使用,但花了近一个星期仍不知道怎么搞,下面是目前个人的做法,参照wince开发手册第七章的GPIO的教程,望各位大神指导一下,急啊!或者哪位高人有第七章的源文件,可以发给我下,真的万分感谢!
建立一个基于TQ2440平台的工程,添加一个头文件IOdriver.h,在里面添加原系统的驱动的内容,目前修改如下:
#include <windows.h>
#include <nkintr.h>
#include <pm.h>
#include "pmplatform.h"
#include "Pkfuncs.h"
#include "bsp.h"
#define IO_CTL_GPIO_1_ON 0x01
#define IO_CTL_GPIO_2_ON 0x02
#define IO_CTL_GPIO_3_ON 0x03
#define IO_CTL_GPIO_4_ON 0x04
#define IO_CTL_GPIO_ALL_ON 0x05
#define IO_CTL_GPIO_1_OFF 0x06
#define IO_CTL_GPIO_2_OFF 0x07
#define IO_CTL_GPIO_3_OFF 0x08
#define IO_CTL_GPIO_4_OFF 0x09
#define IO_CTL_GPIO_ALL_OFF 0x0a
#define IO_CTL_GPIO_6_ON 0x0b
#define IO_CTL_GPIO_7_ON 0x0c
#define IO_CTL_GPIO_6_OFF 0x0e
#define IO_CTL_GPIO_7_OFF 0x0f
··················
v_pIOPregs->GPGCON = (v_pIOPregs->GPGCON &~(3 << 26)) | (1<< 26); // GPG13 == OUTPUT.
v_pIOPregs->GPGCON = (v_pIOPregs->GPGCON &~(3 << 28)) | (1<< 28); // GPG14 == OUTPUT.
·····················
switch(dwCode)
{
case IO_CTL_GPIO_1_ON:
v_pIOPregs->GPBDAT=v_pIOPregs->GPBDAT&~(0x1<<5);
break;
////////////////////////////////////////////////
case IO_CTL_GPIO_6_OFF:
v_pIOPregs->GPGDAT=v_pIOPregs->GPGDAT|(0x1<<13);
break;
case IO_CTL_GPIO_7_OFF:
v_pIOPregs->GPGDAT=v_pIOPregs->GPGDAT|(0x1<<14);
///////////////////////////////////////////////////
break;
case IO_CTL_GPIO_ALL_OFF:
v_pIOPregs->GPBDAT=v_pIOPregs->GPBDAT|(0xF<<5);
break;
default:
break;
然后在IOtestDlg.cpp中添加控制它的指令
DeviceIoControl(handgpiodriver,IO_CTL_GPIO_6_ON,NULL,0,NULL,0,NULL,NULL);
DeviceIoControl(handgpiodriver,IO_CTL_GPIO_7_ON,NULL,0,NULL,0,NULL,NULL);
但是编译的时候却出现头文件找不到的问题(Cannot open include file: 'nkintr.h': No such file or directory),我已经安装了WINCE6.0的开发包,并且找到了头文件,但是仍然没法点亮LED
|
|