专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
STM32F207+DP83848+Lwip怎么不插网线初始化
2019-07-18 17:32
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
7686
15
1266
STM32
F207+DP83848+Lwip如何不插网线初始化,之后插入网线正常
通信
!求解决方案?源代码里是死等,可是在实际应用中不切实际啊?
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
lmksa
2019-07-20 08:11
我在 STM32F107 上已经实现了,和你的问题描述有点不一样:不插网线初始化LWIP,臣妾做不到... 插入网线正常通信,臣妾做到了这个是:不插网线开机,定时5s不断初始化网口,一旦插上网线并且网口初始化成功后再初始化LWIP。之后就可以正常运行,热插拔也没问题。
项目上正在使用,目前没什么问题。
用了ucosii 的官方例程或者大神们移植的程序
首先在BSP_Init() 中找到 ETH_BSP_Config();再找到 Ethernet_Configuration();(程序中我注释了,原因是把这个函数放到任务中定时调用)
void ETH_BSP_Config (void)
{
/* Configure the GPIO ports for ethernet pins */
ETH_GPIO_Config();
/* Config NVIC for Ethernet */
ETH_NVIC_Config();
/* Configure the Ethernet peripheral */
// Ethernet_Configuration();
}
打开 Ethernet_Configuration();找到 ETH_Init(Ð_InitStructure, PHY_ADDRESS);这个函数是初始化网口的,是否连接上网口这个函数返回值不同
用
ETH_Link_Flage
在任务中判断网口是否初始化成功(是否插上网线),连上了就删除初始化网口的任务。以后不管插拔网线都可以连上
建议去仔细看看 uint32_t ETH_Init(ETH_InitTypeDef* ETH_InitStruct, uint16_t PHYAddress) 中干了什么!!!
void Ethernet_Configuration (void)
{
.
.
.
.
/* Configure Ethernet */
ETH_Link_Flage
=
ETH_Init(Ð_InitStructure, PHY_ADDRESS);
/* Enable the Ethernet Rx Interrupt */
ETH_DMAITConfig(ETH_DMA_IT_NIS | ETH_DMA_IT_R, ENABLE);
}
下面是初始话网口的任务
void Net_Init (void *pdata)
{
extern u8 ETH_Link_Flage
while(1)
{
if(
ETH_Link_Flage == 1
)
{
LwIP_Init();
LwIP_Pkt_Sem = OSSemCreate(0);
OSTaskCreate(LwIP_Pkt_task, (void *)NULL, (OS_STK *)&LwIP_Pkt_Task_STK[LwIP_Pkt_STK_Size-1], LwIP_Task_PRIO);
OSTaskDel(NetInit_TASK_PRIO);
}
else
{
Ethernet_Configuration();
}
OSTimeDlyHMSM(0,0,5,0);
}
}
加载中...
查看其它15个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
项目上正在使用,目前没什么问题。
用了ucosii 的官方例程或者大神们移植的程序
首先在BSP_Init() 中找到 ETH_BSP_Config();再找到 Ethernet_Configuration();(程序中我注释了,原因是把这个函数放到任务中定时调用)
void ETH_BSP_Config (void)
{
/* Configure the GPIO ports for ethernet pins */
ETH_GPIO_Config();
/* Config NVIC for Ethernet */
ETH_NVIC_Config();
/* Configure the Ethernet peripheral */
// Ethernet_Configuration();
}
打开 Ethernet_Configuration();找到 ETH_Init(Ð_InitStructure, PHY_ADDRESS);这个函数是初始化网口的,是否连接上网口这个函数返回值不同
用 ETH_Link_Flage 在任务中判断网口是否初始化成功(是否插上网线),连上了就删除初始化网口的任务。以后不管插拔网线都可以连上
建议去仔细看看 uint32_t ETH_Init(ETH_InitTypeDef* ETH_InitStruct, uint16_t PHYAddress) 中干了什么!!!
void Ethernet_Configuration (void)
{
.
.
.
.
/* Configure Ethernet */
ETH_Link_Flage = ETH_Init(Ð_InitStructure, PHY_ADDRESS);
/* Enable the Ethernet Rx Interrupt */
ETH_DMAITConfig(ETH_DMA_IT_NIS | ETH_DMA_IT_R, ENABLE);
}
下面是初始话网口的任务
void Net_Init (void *pdata)
{
extern u8 ETH_Link_Flage
while(1)
{
if(ETH_Link_Flage == 1)
{
LwIP_Init();
LwIP_Pkt_Sem = OSSemCreate(0);
OSTaskCreate(LwIP_Pkt_task, (void *)NULL, (OS_STK *)&LwIP_Pkt_Task_STK[LwIP_Pkt_STK_Size-1], LwIP_Task_PRIO);
OSTaskDel(NetInit_TASK_PRIO);
}
else
{
Ethernet_Configuration();
}
OSTimeDlyHMSM(0,0,5,0);
}
}
一周热门 更多>