文档介绍:#include ""
/***************----- 网络参数变量定义 -----***************/
unsigned char Gateway_IP[4];//网关IP地址
unsigned char Sub_Mask[4]; //子网掩码
unsigned char Phy_Addr[6]; //物理地址(MAC)
unsigned char IP_Addr[4]; //本机IP地址
unsigned char S0_Port[2]; //端口0的端口号(5000)
unsigned char S0_DIP[4]; //端口0目的IP地址
unsigned char S0_DPort[2]; //端口0目的端口号(6000)
unsigned char UDP_DIPR[4]; //UDP(广播)模式,目的主机IP地址
unsigned char UDP_DPORT[2]; //UDP(广播)模式,目的主机端口号
/***************----- 端口的运行模式 -----***************/
unsigned char S0_Mode =3; //端口0的运行模式,0:TCP服务器模式,1:TCP客户端模式,2:UDP(广播)模式
#define TCP_SERVER 0x00 //TCP服务器模式
#define TCP_CLIENT 0x01 //TCP客户端模式
#define UDP_MODE 0x02 //UDP(广播)模式
/***************----- 端口的运行状态 -----***************/
unsigned char S0_State =0; //端口0状态记录,1:端口完成初始化,2端口完成连接(可以正常传输数据)
#define S_INIT 0x01 //端口完成初始化
#define S_CONN 0x02 //端口完成连接,可以正常传输数据
/***************----- 端口收发数据的状态 -----***************/
unsigned char S0_Data; //端口0接收和发送数据的状态,1:端口接收到数据,2:端口发送数据完成
#define S_RECEIVE 0x01 //端口接收到一个数据包
#define S_TRANSMITOK 0x02 //端口发送一个数据包完成
/***************----- 端口数据缓冲区 -----***************/
unsigned char Rx_Buffer[2048]; //端口接收数据缓冲区
unsigned char Tx_Buffer[2048]; //端口发送数据缓冲区
unsigned char W5500_Interrupt; //W5500中断标志(0:无中断,1:有中断)
/*外部中断4服务程序*/
void EXTI4_IRQHandler(void)
{
if(W5500_INT==0)
{
W5500_Interrupt=1;
EXTI->PR=1<<4; //清除LINE4上的中断标志位
}
}
void SPI1_Init(void)
{
RCC->APB2ENR|=1<<2; //PORTA时钟使能
RCC->APB2ENR|=1<<12; //SPI1时钟使能
RCC->APB2ENR|=1<<0;
GPIOA->CRL&=0XFFF0FFFF;
GPIOA->CRL|=0X;//PA4通用挽推输出,输出速度50MHz
GPIOA->ODR|=1<<4; //PA4上拉 ,设置片选引脚
//这里只针对SPI口初始化
GPIOA->CRL&=0X000FFFFF;
GPIOA->CRL|=0XBBB00000;//,输出速度50MHz
GPIOA->ODR|=0X7<<5; //
SPI1->CR1&=~(1<<10);//全双工模式
SPI1->CR1=1<<9; //外部管理NSS引脚
SPI1->CR1&=~(1<<11);//8bit数据格式
SPI1->CR1&=~(1<<1); //CPOL=0时空闲模式下SCK为0 CPOL=0
SPI1->