stspearnet.c

来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C语言 代码 · 共 125 行

C
125
字号
//-----------------------------------------------------------------------------
// SPEArNet Example
// Ethernet demonstration
//-----------------------------------------------------------------------------
#include "hal_map.h"
#include "tcpip_stack.h"
#include "hal_gpio.h"
#include "hal_ic.h"
#include "hal_mac.h"
#include "udp.h"
#include "tcp.h"
#include <string.h>


//-----------------------------------------------------------------------------
volatile void delay(int time)
{
  unsigned short i, j;
  for(j=0; j<time; j++){
  for(i=0; i<0xFFFF; i++);
  }
}

//-----------------------------------------------------------------------------
// name: MAIN_Mac()
// functinality: Continously sending basic Ethernet frames
//-----------------------------------------------------------------------------
void MAIN_mac (void)
{
  EthernetFrame frame;
  char *Buffer = "SpearNet: Example of Ethernet communication, no TCP/IP stack involved!";

  frame.EthernetFrameBySegment.Type = 0x1111;
  memcpy(frame.EthernetFrameBySegment.DstAddr, destMAC, MAC_ADDR_LEN);
  memcpy(frame.EthernetFrameBySegment.SrcAddr, srcMAC, MAC_ADDR_LEN);
  memcpy(frame.EthernetFrameBySegment.Data, Buffer, frame.EthernetFrameBySegment.Type);


  GPIO_Init(GPIO_ALL_AS_OUTs);
  MAC_Init();

  IC_Global_OnOff (IC_IRQ,ENABLE);
  IC_Global_OnOff (IC_FIQ,DISABLE);

  IC_Int_Config (IC_MAC,IC_HIGH_LEVEL);
  IC_Int_OnOff (IC_MAC,ENABLE);

  while(1)
  {
    MAC_Send(&frame, (u16)strlen(Buffer)+ETHER_HEADER_LENGTH);
    LED0_Toggle();
    LED1_Toggle();
    delay(5);
  }

}

//-----------------------------------------------------------------------------
// name: MAIN_udp()
// functinality: Continously sending UDP packets
//-----------------------------------------------------------------------------
void MAIN_udp(){


  EthernetFrame frame;

  GPIO_Init(GPIO_ALL_AS_OUTs);
  MAC_Init();
  Tcp_Ip_Init();

  char *szData = "This is a tiny TCP/IP stack test example for SpearNet!";
  u16 len = (u16)strlen(szData);

  while(1){
  Tx_Udp_Frame(&frame, (u8 *)szData, len);
  LED0_Toggle();
  LED1_Toggle();
  delay(5);
  }

}

//-----------------------------------------------------------------------------
// name: MAIN_tcpip()
// functionality: showing ping and http server functionality
// ARP, TCP, ICMP
//
// use:
// ping 192.168.1.15 from a host command line
// or
// http://192.168.1.15 in a web browser
//-----------------------------------------------------------------------------
void MAIN_tcpip(){



  GPIO_Init(GPIO_ALL_AS_OUTs);
  MAC_Init();
  Tcp_Ip_Init();

  IC_Global_OnOff (IC_IRQ,ENABLE);  //Enable IRQ
  IC_Global_OnOff (IC_FIQ,DISABLE);

  IC_Int_Config (IC_MAC,IC_HIGH_LEVEL); //Enable MAC interrupts
  IC_Int_OnOff (IC_MAC,ENABLE);

  while(1);



}

//-----------------------------------------------------------------------------
int main()
{
// choose one function and coment the rest

MAIN_tcpip();
//MAIN_udp();
//MAIN_mac();
}

//-----------------------------------------------------------------------------

⌨️ 快捷键说明

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