STM32 调试小问题记录

一、概叙

本文主要是记录使用STM32过程中一些小问题记录 ,以便后期同样问题解决和广大开发者避坑。

二、问题

1、使用串口的空闲中断+DMA接收数据时,超过512个字节,程序就进入了infinite loop中死机了,低于512个字节没有问题。

解决:发现是uart-rx对应的dma中断函数没写,加上之后就好了,但是本质原因未知,如有知道原因麻烦评论区回复。

2、初始化未插入网线,上电后无法ping通

环境:LAN8720,裸机 ,cubemx生成的工程,一开始插上网线初始化之后随意插拔均可,

解决:原因是未插网线导致初始化未成功,后面插网线了并没有执行一些初始化相关操作。

(1)主循环中加入 ethernetif_set_link(netif_default); 目的是 netif_set_link_callback(&gnetif, ethernetif_update_config); 网线状态发生变化时 ethernetif_update_config得到执行。

(2)ethernetif_update_config 调用了ethernetif_notify_conn_changed ,重写ethernetif_notify_conn_changed如下:

ethernetif_notify_conn_changed(struct netif *netif)
{
if (netif_is_link_up(netif))
      {
        printf("net link is up\r\n");
        netif_set_up(netif_default);
      }
      else
      {
        printf("net link is down\r\n");
      }
}

完成以上两步,就实现了插拔。对于多客户端通信,ethernetif_notify_conn_changed函数中也可以加入客户端删除。资源释放等相关功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值