《ARM与嵌入式系统基础教程》

源代码在线查看: io.c

软件大小: 6735 K
上传用户: 神剑追光
关键词: ARM 嵌入式系统 基础教程
下载地址: 免注册下载 普通下载 VIP

相关代码

				//*------------------------------------------------------------------------------------------------
				//* 文件名				: IO.c
				//* 功能描述			: 系统输输出函数
				//* 作者    			: 焦海波
				//* 版本				: 0.1
				//* 建立日期、时间		: 2006/08/07 15:26
				//* 最近修改日期、时间	: 
				//* 修改原因			: 
				//*------------------------------------------------------------------------------------------------
				//*------------------------------------------ 头文件 -----------------------------------------------
				#include	"/uCOS-II/ucos_ii.h"
				#include	"/tools/stringExtAPI.h"
				#include	"/at91sam7x256/periph/emac/lib_emac.h"
				#include	"flash.h"
				//*================================================================================================
				//*                     函 数 区
				//*================================================================================================
				//*------------------------------------------------------------------------------------------------
				//* 函数名称 : ubSetNetCFGParam
				//* 功能描述 : 设置网络配置参数(IP地址、子网掩码、网关)
				//* 入口参数 :      [in] IP地址
				//*	         : [in] 子网掩码
				//*          : [in] 网关地址
				//* 出口参数 : 设置成功返回TRUE,否则返回FALSE
				//*------------------------------------------------------------------------------------------------
				BOOLEAN blSetNetCFGParam(INT32U u32IP, INT32U u32NetMask, INT32U u32Gateway)
				{
					ST_NET_CFG_PARAM	__stNetCFG;
					INT32S				__s32DNLen = 0;
					
					memset(&__stNetCFG, 0, sizeof(ST_NET_CFG_PARAM));
					
					if(*((INT32U*)PST_NET_CFG_PARAM->szDN) != 0xFFFFFFFF)
					{
						__s32DNLen = strlenExt(PST_NET_CFG_PARAM->szDN);
						memcpy(__stNetCFG.szDN, PST_NET_CFG_PARAM->szDN, __s32DNLen);
					}
					
					__stNetCFG.u32Flag = NET_CFG_FLAG;
					__stNetCFG.u32IP = u32IP;
					__stNetCFG.u32NetMask = u32NetMask;
					__stNetCFG.u32Gateway = u32Gateway;
					
					if(DFL_WriteFlash((INT32U*)&__stNetCFG, NET_CFG_PARAM_STORE_ADDR, ST_NETCFG_PARAM_HDR_LEN + __s32DNLen) == ERR_WFLASH_OK)
						return OS_TRUE;
					else
						return OS_FALSE;
				}
				//*------------------------------------------------------------------------------------------------
				//* 函数名称 : ubSetDN
				//* 功能描述 : 设置域名
				//* 入口参数 : [in] 指向域名的指针
				//*          :  [in] 域名的长度
				//* 出口参数 : 设置成功返回TRUE,否则返回FALSE
				//*------------------------------------------------------------------------------------------------
				BOOLEAN blSetDN(INT8S *pszDN, INT32S s32Len)
				{
					ST_NET_CFG_PARAM	__stNetCFG;
					
					memset(&__stNetCFG, 0, sizeof(ST_NET_CFG_PARAM));
					
					if(PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG)
					{
						__stNetCFG.u32Flag = NET_CFG_FLAG;
						__stNetCFG.u32IP = PST_NET_CFG_PARAM->u32IP;
						__stNetCFG.u32NetMask = PST_NET_CFG_PARAM->u32NetMask;
						__stNetCFG.u32Gateway = PST_NET_CFG_PARAM->u32Gateway;
					}
					memcpy(__stNetCFG.szDN, pszDN, s32Len);
					
					if(DFL_WriteFlash((INT32U*)&__stNetCFG, NET_CFG_PARAM_STORE_ADDR, ST_NETCFG_PARAM_HDR_LEN + s32Len) == ERR_WFLASH_OK)
						return OS_TRUE;
					else
						return OS_FALSE;
				}
				//*------------------------------------------------------------------------------------------------
				//* 函数名称 : vReadASCIIIP
				//* 功能描述 : 读取ASCII类型的IP地址到指定的缓冲区
				//* 入口参数 : [in] 指向接收缓冲区的指针
				//* 出口参数 : 无
				//*------------------------------------------------------------------------------------------------
				void vReadASCIIIP(INT8S *pszIP)
				{	
					sprintf(pszIP, "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetIPAddr(0) : IP_ADDR_0);
					sprintf(pszIP + strlenExt(pszIP), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetIPAddr(1) : IP_ADDR_1);
					sprintf(pszIP + strlenExt(pszIP), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetIPAddr(2) : IP_ADDR_2);
					sprintf(pszIP + strlenExt(pszIP), "%d", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetIPAddr(3) : IP_ADDR_3);
				}
				//*------------------------------------------------------------------------------------------------
				//* 函数名称 : vReadASCIINetMask
				//* 功能描述 : 读取ASCII类型的子网掩码地址到指定的缓冲区
				//* 入口参数 : [in] 指向接收缓冲区的指针
				//* 出口参数 : 无
				//*------------------------------------------------------------------------------------------------
				void vReadASCIINetMask(INT8S *pszNetMask)
				{	
					sprintf(pszNetMask, "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetNetMask(0) : NET_MASK_0);
					sprintf(pszNetMask + strlenExt(pszNetMask), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetNetMask(1) : NET_MASK_1);
					sprintf(pszNetMask + strlenExt(pszNetMask), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetNetMask(2) : NET_MASK_2);
					sprintf(pszNetMask + strlenExt(pszNetMask), "%d", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetNetMask(3) : NET_MASK_3);
				}
				//*------------------------------------------------------------------------------------------------
				//* 函数名称 : vReadASCIIGateway
				//* 功能描述 : 读取ASCII类型的网关地址到指定的缓冲区
				//* 入口参数 : [in] 指向接收缓冲区的指针
				//* 出口参数 : 无
				//*------------------------------------------------------------------------------------------------
				void vReadASCIIGateway(INT8S *pszGateway)
				{	
					sprintf(pszGateway, "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetGateway(0) : GATEWAY_ADDR_0);
					sprintf(pszGateway + strlenExt(pszGateway), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetGateway(1) : GATEWAY_ADDR_1);
					sprintf(pszGateway + strlenExt(pszGateway), "%d.", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetGateway(2) : GATEWAY_ADDR_2);
					sprintf(pszGateway + strlenExt(pszGateway), "%d", (PST_NET_CFG_PARAM->u32Flag == NET_CFG_FLAG) ? macGetGateway(3) : GATEWAY_ADDR_3);
				}			

相关资源