完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好, 2个问题请教下,
1.我目前把 CH563Q exam 的 usb device 和 udp client整合一个程序, 由芯片usb接口插入host之后程序启动, 先把usb初始化,然后进入无穷回圈, usb 中断处理 host命令, 当接收命令去启动 udp client之后, usb 就在也不会发生没有中断了; 如果不启动 udp client,则usb数据包收发都正常. 这需要什么特殊处理吗? 例程大致如下(和 exam例子差不多): IRQ_Handler -> USBDev_IRQHandler -> CH563NET_ETHIsr -> CH563NET_timeIsr main -> USBDev_ModeSet/Init/UsbInt_Enable -> while(1) { if(net_enable) { if(!init) { CH563NET_LibInit CH563NET_CreatSocket } else { CH563NET_MainTask CH563NET_HandleGlobalInt } } 2.CH563NET_GetPHYStatus 是否只在调用 CH563NET_SocketCreat 之后获取的状态才是有效的, 还是只能在发生改变时, 中断获取? 3.udp client网络初始化时默认是有 enable ping功能的,这是不是当 CH563NET_SocketCreat 都完成之后 (这里都有指定ip等,返回都正确), 连上网线, 在别的 pc 或平台直接 pin ch563 ip就可以, 不需要在代码加上 PROTO_TYPE_IP_RAW 的处理? |
|
相关推荐
3个回答
|
|
启动网络后,您可以先看一下设备是否能正常做完枚举的过程。CH563NET_GetPHYStatus 函数,是用于Socket创建之前,正常的流程是网络库函数初始化完之后,就可以调用CH563NET_GetPHYStatus 函数检查PHY的连接状态。再完成Socket创建后,正常while循环调用网络的主函数,PC就可以正常PINGCH563。
|
|
|
|
建议把udp_client移植到usb_device下,在函数进入主循环前把USB和udp参数初始化完成。并在usb驱动可能进入的循环里都加上
CH563NET_MainTask(); if(CH563NET_QueryGlobalInt()) CH563NET_HandlerGlobalInt(); |
|
|
|
谢谢, 已经找到问题了, 原来是调用了 CH563NET_Init(库初始化) 以后, 全局中断被关了, 重新打开就行了.
|
|
|
|
只有小组成员才能发言,加入小组>>
522 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2903 浏览 2 评论
2399 浏览 1 评论
867浏览 2评论
687浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
417浏览 1评论
522浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
812浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:15 , Processed in 1.074913 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号