⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 devs.c

📁 该文档描述的关于ARM9系列的自带串口的驱动
💻 C
字号:
/************************************************************************
*                 E X T E R N A L   R E F E R E N C E S
************************************************************************/
#include <taskLib.h>
#include <logLib.h>
#include <msgQLib.h>
#include <intLib.h>
#include <sysLib.h>
#include <ioLib.h>
#include <iv.h>
#include <string.h>
#include <D:\Tornado2.2\target\config\s3c2410\s3c2410.h>
#include <stdio.h>


int 	   iARMSrlfd[ARMSrlPtNum];                      /*file descriptor from which to read */
unsigned char iARMFlag;

/************************************************************************
                    Function Definition
************************************************************************/
int SendtoARMSrl(int ,unsigned char* , int);           /*Send Message to ARM Serial*/      
void RecFromARMSrlTask(int);               	 	/*Receive Data fron ARM Serial*/
PRIVATE void ARMSrlTxTask(int );
PRIVATE void ARMSrlRxTask(int );


/*************************************************************************************************
		Read Message from Serial
*************************************************************************************************/
void RecFromARMSrlTask(int iSrlPort)
{
	unsigned char ch;
	char str[10];
	
	sprintf(str,"/tyCo/%d",iSrlPort);
	if((iARMSrlfd[iSrlPort] = open(str, O_CREAT|O_RDWR, 0)) ==ERROR)
	{
		printf("RecFromARMSrlTask:Can't Open COM%d\n",iSrlPort);
	}
	
	ioctl (iARMSrlfd[iSrlPort], SIO_HW_OPTS_SET,(CLOCAL|CREAD|CS8|PARENB)&~(HUPCL|STOPB|PARODD) );
	ioctl (iARMSrlfd[iSrlPort], FIOBAUDRATE, BaudRate);
	ioctl (iARMSrlfd[iSrlPort], SIO_MODE_SET, SIO_MODE_INT );

	while(1)
	{
		if( (read(iARMSrlfd[iSrlPort], (unsigned char*)&ch,1) ) == 1 )
		{
			msgQSend(QQ_MsgQ_SrlRxChar[iSrlPort], &ch, 1, NO_WAIT, MSG_PRI_NORMAL);
		}
	}
	close(iARMSrlfd[iSrlPort]);
}
/*************************************************************************************************
		Write Message to Serial
*************************************************************************************************/
int SendtoARMSrl(int iSrlPort , unsigned char* DataBuff, int Length)
{
	unsigned int i;
	unsigned char ch[256];

	ioctl (iARMSrlfd[iSrlPort], SIO_HW_OPTS_SET,(CLOCAL|CREAD|CS8|PARENB)&~(HUPCL|STOPB|PARODD) );
	ioctl (iARMSrlfd[iSrlPort], FIOBAUDRATE, BaudRate);
	ioctl (iARMSrlfd[iSrlPort], SIO_MODE_SET, SIO_MODE_INT );

/*	printf("Sending... ");*/
	for(i=0; i<Length; i++)
	{
		ch[i] = DataBuff[i];
		if(write(iARMSrlfd[iSrlPort], (char *)&ch[i], 1) != 1)
		{
			printf("SendtoARMSrl:Can't Write COM%d\n",iSrlPort);
			return -1;
		}
/*		printf("Group %02x\n", ch[i]);*/
	}
/*	printf("OK!\n");*/
	
	return 0;
} 



⌨️ 快捷键说明

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