产品集成了 16 位 GPIO,每 1 位能够界定成键入或导出。16 位 GPIO 分成 2 组,每一组 8 位。对GPIO
操作是按照组所进行的,每一组 GPIO 相匹配 8 个操纵或数据存储器。第 1 组 GPIO 的 8 个存储器相对应的 I/O地址是
0x320~0x327;第 2 组 GPIO 的 8 个存储器相对应的 I/O 地址是 0x328~0x32F。
对 GPIO 操作除开其自身控制或数据存储器外,也必须设定南桥中关于存储器。这种存储器界定 GPIO
机器的打开和关掉、GPIO 的基地址和有关终断设置。
下边给出一个实例:
/************************************************************
* 蓝天白云 GPIO 演试程序流程
*
* 表明:
* 1)本系统适用蓝天白云 PCC-3428 和 PCC-3429
* 2)用本程序流程进行测试时,请把第 1 组 GPIO
* 与第 2 组 GPIO 开展互联。
* 3)能对 GPIO 里的每 1 位来操作,但为了更好地表明,
* 本程序流程对组(8 位)来操作。
* 4)函数公式 iowrite32()和 ioread32()各自用以 32 位存储器的
* 读和写实际操作。由于南桥中存储器全是 32 位。
* Version: 2.0
* Author: Xu Houqing
* Date: 8/4/2005
*******************************************************/
#include <stdio.h>
#include <conio.h>
#define PCICMD 0xcf8 //PCI 详细地址引索存储器
#define PCIDAT 0xcfc // PCI 数据存储器
extern void iowrite32( unsigned long address, unsigned longvalue );
extern unsigned long ioread32( unsigned long address );
//32 位存储器的写实际操作函数公式
void iowrite32( unsigned long address, unsigned long value )
{
asm{
db 66h
mov dx, word ptr address
mov ax, word ptr value
out dx, a