1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
stm32f767+udp通信
写在前面 我也很菜,很多原理都没搞明白,纯粹是代码调通至上原则,写博客也只是为了记录。 项目背景 udp将测量的距离值和角度值传给电脑并通过网络调试助手显示 基础知识 STM32f767芯片自带以太网模块,该模块包括带专用DMA控制器的MAC控制器—一句话,stm32f767内部有MAC模块。外接PHY芯片(LAN8720A)通过RMII与内部MAC芯片连接,实现数据交换,通过SMI接口配置PHY芯片。 为什么使用UDP 无它,唯快而已。 对接收和发送的理解 我一开始一直不明白,单片机和振镜连(二者SPI通信),单片机和电脑用网线连,那我的数据处理部分是放在接收回调函数中呢还是调用udp的发送函数呢?因为以太网不像我从前使用串口,串口的RX和TX跟雷达的RX和TX连,这样在串口接收中断函数中我就可以根据雷达那边的数据格式进行校验存储。 最后用正点原子的例程测试了一下,我按下key0,网络调试助手会显示收到的数据;点击网络调试助手界面上的发送,在lcd上能看到发送的数据。所以我认为,sendata函数是单片机发给电脑。 遇到的问题 win10设置本地电脑连接属性 右键网络图标-打开网络和Internet设置,进入下面这个界面 点击更改适配器选项进入下面这个界面 右键以太网(这里注意,我插上网线的时候,除了图中显示的以太网,还有一个以太网3,仔细看下面的英文,有u***的那个才是跟单片机连接的)-属性 然后按照正点原子的操作就行(上图摘自正点原子,如侵权,联系我删除) 发送数组的填充 在正点原子的例程里面 const u8 *tcp_demo_sendbuf="Apollo STM32F4/F7 UDP demo send datarn"; 是定义了一个常量,这里其实我不是很明白,定义u8 *,后面赋值的是字符串? 我要发送的是数组,有浮点型,有整型。 char my_udp_demo_sendbuf[UDP_DEMO_RX_BUFSIZE];//存放要发送的数据 char *udp_demo_sendbuf;//这个可以理解为udp的发送缓冲区 udp服务器发送函数的入口参数是一个结构体,我进去也没弄明白究竟由什么组成,但是实验证明,把上面的udp_demo_sendbuf作为入口参数塞进去就能发送 //UDP服务器发送数据 void udp_demo_senddata(struct udp_pcb *upcb) { struct pbuf *ptr; ptr=pbuf_alloc(PBUF_TRANSPORT,strlen((char*)udp_demo_sendbuf),PBUF_POOL); //申请内存 if(ptr) { ptr->payload=(void*)udp_demo_sendbuf; udp_send(upcb,ptr); //udp发送数据 pbuf_free(ptr);//释放内存 } } udp_demo_sendbuf=DATA_Mask(Size);//数据打包函数返回值为char*型的 udp_demo_senddata(udppcb); 在哪里调用发送函数 正点原子的例程是在while中不断的扫描按键,按下后进行对应的操作。我只需要udp功能,所以删掉了按键扫描的部分,一直在while循环中执行发送函数,导致我的网络调试助手一开启就没法断开udp连接,只能强制关闭。 我的解决方法是用定时器,在定时器中调用发送函数。 |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9055 浏览 16 评论
4086 浏览 18 评论
1174浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 22:09 , Processed in 1.094533 second(s), Total 77, Slave 58 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号