STM32加lwip, 在启动时没插网线,启动后再插网线,会发现网络功能无法使用,是因为启动过程中初始化网络失败。
这种情况,需要在CubeMX的lwip配置中,允许LWIP_NETIF_LINK_CALLBACK ,
在主循环中加入函数
ethernetif_set_link(netif_default);
检查网线是否连接。
然后自己增加回调函数,
void ethernetif_notify_conn_changed(struct netif *netif)
{
/* NOTE : This is function could be implemented in user file
when the callback is needed,
*/
if(netif_is_link_up(netif))
{
printf("net link is uprn");
netif_set_up(netif_default);
}
else{
printf("net link is downrn");
}
}
关键是需要启动网络接口。
关键字:stm32 以太网 启动 网线
引用地址:
stm32 以太网启动后再插网线的问题
推荐阅读最新更新时间:2024-11-13 13:34
发改委启动对美国高通公司反垄断调查
北京时间11月25日晚间消息,美国移动芯片制造商高通周一宣布,中国国家价格管理机构:发改委已根据中国的反垄断法启动对自己的调查。 路透社的一篇报道称,高通方面已获得通知,发改委本次调查的内容目前处于机密状态。高通称,自己没有意识到触犯了中国的任何法律。 发改委是中国从事经济规划和价格管理的最高机构。据中国官方媒体的报道和法律公司发布的研报,中国发改委在过去三年中已在国内外启动了近20桩与价格有关的调查。(立悟/编译) 此外据台湾媒体报道,手机芯片大厂高通(Qualcomm)25日证实,大陆政府以反垄断法之名正在调查该公司业务。高通客户包含宏达电(2498) 、三星、苹果等国际一线品牌,据华尔街日报报导,该公司已出面
[手机便携]
如何区别stm32中断与事件
事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断。事件还是其它一些操作的触发源,比如DMA,还有TIM中影子寄存器的传递与更新;而中断是不能触发这些操作的,所以要把事件与中断区分开。当你只要产生中断而不想触发其它操作时,就可以用事件屏蔽寄存器实现。 在STM32中,中断与事件不是等价的,一个中断肯定对应一个事件,但一个事件不一定对应一个中断。 这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求
[单片机]
stm32最小系统组成及作用
最小系统是单片机工作时的最低要求,不包含外设控制,原理比较简单,下面我们一起来看看stm32最小系统组成及作用。 stm32最小系统上电之后,能够让单片机正常运转以及下载程序,没有其他的功能。 stm32最小系统是由电源、复位、时钟、调试/下载接口、启动组成的。 电源 stm32单片机一般都是3.3V供电,电容起到滤波的作用。 复位 STM32复位引脚是低电平复位,正常工作状态,复位引脚是高电平。复位方式一共有三种,分别为上电复位、手动复位、程序自动复位。 时钟 晶振+起振电容 +(反馈电阻MΩ级) 能够让晶振两端的等效电容等于或接近于负载电容,可以起到一定的滤波作用,让晶振波形中的高频杂波消除。 调试/下
[单片机]
stm32专题三十五:DAC
DAC简介: stm32只有2个DAC,每个DAC有1个独立的通道,这和ADC有区别(有3个ADC,每个ADC有16个通道),特征如下: DAC 功能框图 功能说明: 1 参考电压: 2 数模转换 输出通道: 注意,在使用DAC时,GPIO引脚一定要配置成模拟输入,不然没有输出,中文参考手册的描述: 3 触发源及DHRx寄存器: 双DAC 模式: DAC 的寄存器描述: 1 控制寄存器DAC_CR 2 DAC 软件触发寄存器: 3 输入数据对齐寄存器: 4 双DAC输入数据寄存器: 5 输出数据寄存器(由软件写入): 定时器触发设置 1 定时器时基初始化,并配
[单片机]
浅谈 STM32 硬件I2C的使用 (中断方式 无DMA 无最高优先级)
引子 STM32的硬件I2C很多人都对它望而却步。因为很多电工都说,STM32 硬件 I2C有BUG、不稳定、死机等等……最后都使用GPIO模拟I2C。 的确,模拟I2C好用。但是在我看来在一个72M的Cortex-M3的MCU上这样做非常不妥。一般来说I2C是一种慢速总线,就算工作在400kHz的快速模式上,I2C传送每个字节仍需要至少23us——还没有计算地址、起始信号和结束信号的发送。如果使用GPIO模拟的I2C,这23us的CPU时间都在空转中浪费了,而这23us已经可以做不少的事情了,所以在STM32上I2C还是使用硬件为佳——虽然它多多少少有点缺陷。 这篇文章不是给完全没有接触过STM32 硬件I2C的新手看的,看这篇
[单片机]
STM32 定时器时钟配置技巧
众所周知 STM32 的时钟配置比较复杂,而定时器的时钟配置更是 ‘奇葩‘。 如下图(截图自STM32F4编程手册)APB的预分频器分频系数如果不为1,则定时器的时钟就倍频了反而。 配置技巧 下面以STM32F4为例, 这里配置定时器8的计数频率为 10Khz,从时钟树中可知TIM8挂在APB2总线 获取当前 APB2(PLCK2) 的时钟频率 获取 APB2 预分频器的分频值 根据上述参数判断,如果分频值不为1,则定时器时钟 x2 .Prescaler = xxx 这是一个推荐的写法 int hw_timer_init(TIM_HandleTypeDef *htim) { uint32_t FLatency, t8
[单片机]
玩转STM32(13)存储空间的开始地址
前面学习了怎么样选择不同的储存器来加载代码,也就是运行代码,决定了从哪里开始运行的问题。但是CPU选择了储存器之后,还要知道代码是从存储器哪一个位置开始读取代码?也就是从哪一个地址开始读取代码?现在就来解决这个问题。我们知道32位的CPU有4G的地址空间,因此从哪一个地址里读取代码,就有很多的选择了。至于放在什么地址,一般是由CPU的生产厂家来决定的。在这里可以查看到STM32F407的内部Flash储存器是放在0x8000000地址,更加详细的地址可以从STM32手册里查看到,如下图: 从上图可以看到代码就是写入到0x8000000,当CPU选择从内部存储器启动时,就会从这里加载代码。从这里也可以看到,如果是使用外部存储器,
[单片机]
一款基于STM32的智能灭火机器人设计
引 言 本设计的研究初衷来源于灭火机器人比赛,比赛场地将采用国际标准比赛场地,比赛场地平面图如图1所示。比赛场地的墙壁高为33cm,厚为2 cm,由木头做成。墙壁刷成白色。比赛场地的地板是被漆成黑色的光滑木制板。场地中所有的走廊和门口都是46 cm的开口,一个白色的2.5 cm宽的白色带子或白漆印迹表示房间人口,在距离火焰30 cm的圆上有一条2.5 cm宽的白线。根据要求,该机器人要在模拟的四室一厅房间内完成发现并确认火源、灭火和回家(回到出发点H)等功能。 本文以STM32F103嵌入式芯片为核心,完成灭火机器人的软、硬件设计。当机器人启动后,前部和左右的红外测距传感器为机器人的避障功能和沿墙走方式 提供参考信号。机器人的
[单片机]