有了上述DP83848Send()函数,下面来做个小程序试验一下:
int main() {
u8 MyMacAddr[6] = {0x08, 0x00, 0x06, 0x00, 0x00, 0x09};
/* 下面是一段60byte大小的ARP报文,手动构建的 */
u8 mydata[60] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x08, 0x06, 0x00, 0x01, 0x08, 0x00, 0x06, 0x04,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0xa8,
0x02, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xa8,
0x02, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
u32 clock;
/* 默认调用SystemInit,系统时钟168MHz */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //4位抢占,0位响应
DP83848Init(MyMacAddr);
while(1){
DP83848Send(mydata, 60);
clock = 42000000; //1s延时,while中每个步进需要4个周期
while(clock--);
}
}
使用Keil编译,用JLink下载到STM32F407中,给开发板接上网线,用WireShark就可以在网口中观察到STM32每隔1秒钟向外发送ARP报文了,虽然这段报文几乎没有任何意义。
|