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 + -
显示快捷键?