gpio.c

来自「LPC2148 通过 CH375 读写U盘的例子」· C语言 代码 · 共 96 行

C
96
字号
#include "config.h"
uint32 u;
void delay2us(void)
{
	uint16 i=9;
	while(i--);
}

void delay1us(void)
{
	uint16 i=5;
	while(i--);
}

void	mDelay100mS(void )
{
	uint16	i=5000;
	while(i--)
	delay2us();	
}




void gpio_init(void)
{
	SCS     = 0;
	PINSEL0 = 0x00000000;
	PINSEL1 = 0x00000000;
	PINSEL2 = 0x00000004;
	IODIR0  = (1<<25) | (1<<28) | (1<<29) | (0x80000000) ; //cs rd wr a0 set to out	
	IOSET0  = 1<<28 | 1<<29;
	
}


void xWriteCH375Cmd( uint8 mCmd )
{ 
	//uint32 i=1;
	IODIR0 = (1<<25) | (1<<28) | (1<<29) | (0x80000000)  | 0x00ff0000;
	delay2us();	
	
	IOPIN0 = (IOPIN0 & (~(1<<25 | 0x80000000))) | 0x80000000;
	
	IOPIN0 = (IOPIN0 & (~(1<<28 | 0x80000000))) | 0x80000000; //WR置0
	
	IOPIN0 = (IOPIN0 & 0x7f00ffff) | ((uint32)mCmd<<16) | 0x80000000; //写XD0~7

	IOPIN0 = IOPIN0 | (1<<28) | 0x80000000;	  //WR置1
	
	IOSET0 = 1<<25;
	
	delay2us();	
	

}

void xWriteCH375Data( uint8 mData ) 
{
	//uint32 i=1;	
	
	IODIR0 = (1<<25) | (1<<28) | (1<<29) | (0x80000000)  | 0x00ff0000;
	
	IOCLR0 = 0x80000000 | 1<<25;               //A0置0,CS置0
	
	IOPIN0 = IOPIN0 & (~(1<<28)); //WR置0
	
	IOPIN0 = (IOPIN0 & 0xff00ffff) | ((uint32)mData<<16); //写XD0~7
	
	IOPIN0 = IOPIN0 | (1<<28);	  //WR置1
	
	IOSET0 = 1<<25;
	
	delay1us();	
	

}

uint8 xReadCH375Data( void ) 
{
	uint8 xd;
	IODIR0 =( (1<<25) | (1<<28) | (1<<29) | (0x80000000) ) & 0xff00ffff;
	
	IOCLR0 = 0x80000000 | 1<<25;                 //A0置0,CS置0
	
	IOPIN0 = IOPIN0 & (~(1<<29)); //RD置0
	
	IOPIN0 = IOPIN0 | (1<<29);	  //RD置1
	
	xd     = (IOPIN0 & 0x00ff0000)>>16; //读取XD0~7
	
	IOSET0 = 1<<25;
	
	delay1us();	
	return xd;	 
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?