天嵌 ARM开发社区

 找回密码
 注册
查看: 2578|回复: 4

用VS2005在wince下控制GPIO,用于外扩IO

[复制链接]
shajiahuo 发表于 2013-4-15 14:39:54 | 显示全部楼层 |阅读模式
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

亚瑟王 发表于 2013-4-15 15:39:36 | 显示全部楼层
1、驱动中要有能够操作你指定IO口的功能
2、应用程序根据驱动中的API操作对应的API。
回复

使用道具 举报

 楼主| shajiahuo 发表于 2013-4-15 17:14:55 | 显示全部楼层
亚瑟王 发表于 2013-4-15 15:39
1、驱动中要有能够操作你指定IO口的功能
2、应用程序根据驱动中的API操作对应的API。

To亚瑟王,我现在这种调用方式是不是错误的,我是建立了一个工程,然后将原来系统的驱动文件进行修改,然后将他做为一个头文件,这样来调用使用的,但是不知道怎么搞,一直出错,我也试过直接在工程里面用端口的地址来搞,但是点不亮LED,不知道管理员能不能够帮我一下!万分感谢!
回复

使用道具 举报

H__.u 发表于 2013-4-23 19:34:14 | 显示全部楼层
天嵌的资料很坑.....
回复

使用道具 举报

H__.u 发表于 2013-4-23 19:34:59 | 显示全部楼层
只有他们公司的人能看懂 ......
省略的部分太多 对新手来说是致命的   
回复

使用道具 举报

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-28 18:42 , Processed in 1.046875 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表