出出啊
出出啊
It is Not the Mountain We Conquer, but Ourselves

注册于 4 months ago

回答
627
文章
13
关注者
39

电脑上安装抓包软件看看,看看电脑端收没收到ICMP包,电脑有没有返回。

你的usbd_config.h的路径对吗?
感觉不对啊,都是 F1 使用的就都是 stm32\libraries\HAL_Drivers\config\f1\usbd_config.h这里目录下的头文件,
你现在用的像是 F4 下使用的stm32\libraries\HAL_Drivers\config\f4\usbd_config.h

image.png
从初始化就有问题吧,但是为啥 ifconfig 就能显示 mac 地址。难道 ifconfig 显示的内容全是从配置读取的?

image.png
浏览器里输入这个链接,试试能访问不
不带 .git 后缀

你的控制台串口引脚和 sd 接口引脚是不是复用了?

@yukelab 错,互斥量又叫锁,多用于临界区保护,不同于信号量的主要工作是传递一个信号和线程同步。
加锁和释放锁是要成对的。而且当且仅当多线程情况下,多个线程访问临界区需要互斥量保护临界区只能有一个线程访问。所以叫它互斥量。
中断中向线程传递一个同步消息,用信号量。用互斥量肯定是错的。包括中断的回调函数中都不允许使用互斥量加锁。

看你的代码,没发现哪儿的互斥量使用异常了,rt_workqueue_dowork 中使用互斥量了?
hw_timer2_callback 是硬件定时器中断的回调函数吧,回调函数中调用的函数以及子孙函数里都不允许使用互斥量。

关于线程栈,有个误区,以为完全被线程使用了,其实不是。单单论线程内函数调用树的深度,总是有个固定的值(包括递归调用)。
但是,中断不在函数调用树内,中断是随机的,任何时候可能出现的。只要你没关中断,就有可能进入中断异常。如果中断回调函数内有比较复杂的函数调用,比如 rt_mq_send ,中断 + 中断 + 任务调度 + 任务调度的情况都是有几率出现的。
一次中断耗用了多少栈,一次任务调度又耗用了多少栈,加上线程自己函数调用占用。还觉得 128 很富余吗?

image.png
这个路径下有个 package.py 文件,搜一下有没有?

想起来一件事情来,在你修改向量表地址之前,rtt 可能已经偷偷开中断了。

mdk 和 stutio 使用的编译器不一样,⊙﹏⊙b

上电配置过程是有一段时间是这样的,一直发中断,配置完成后就不发中断了,然后就是按屏幕的时候一直发中断,不按就不发。
检查一下你的屏使用的触摸芯片是哪款,核对iic 地址以及寄存器的地址等等。
rt_hw_gt9147_init 这个函数里有上电时序,时序对不对。别人写的代码也不一定那么完全可靠。自己全核查一遍才放心。

这种问题,根源不定在哪儿。有一个排查方法,你可以尝试一下。
先删减组件,从线程开始,然后是组件,板级组件,系统配置。
然后是反向添加,发现在某个部分删除和添加明显引起问题了,相关性很高的部分。重点检查那个部分。

你的挂载 elm 文件系统部分代码在哪儿?格式化磁盘分区代码在哪儿?

回到
顶部

发布
问题

投诉
建议