我设计的方法是:一共三个线程,最高线程是对看门狗进行喂狗操作,其他二个线程定期给做高线程发送事件,最高线程接收以后进行喂狗操作。不初始化事件集和发送以及接收事件集,三个线程正常运行,目前运行事件集出现死机,不断打印rt-thread的错误信息,这个问题是出在哪呢,都是按官方API手册来得。
网盘链接:链接:链接:https://pan.baidu.com/s/1OFhQJ7047dMSPnSaq3Au-Q
提取码:azip
通过报错原因,可以在 led_thread里 发送的地方打个断点,软件调试下。这种情况,应该是【野指针】或空指针引起的。
另外:
(1)注释掉event发送,看看event是否初始化成功,event是否是全局的结构体(非指针)。
(2)rt_event_init 可以判断返回值,而不是只打印error
在led_thread打了断点了,在打印异常那卡住了,注释掉event能够初始化成功,rt_event_init我现在通过返回值判断是否初始化成功得,哥们qq多少呀,我传给你你给看下,困扰有二天了这个问题
{{5.RT-Thread Nano.zip(uploading…)}}
贴下其他代码,发送的flag是什么?
这个是我发送的标志,我用的芯片是stm32f103c8t6,我在帖子后面贴了完整工程的代码。谢谢哈
你这个LED的线程,发送event太早了,event没有初始化。
建议led_thread 加个延时,再while(1)发送。
@张世争 好的,我已经按您的方法做了,led_thread线程我加了一个50ms的延时,现在还是不行。
延时改为:1000以上试下,发现错误转到main线程了,main的代码贴下。
@张世争 改到2秒了已经还是不行,我贴子有百度网盘完整代码分享,可以下载。
@张世争 同志哈有没有结果呀
跑过了,是看门狗复位引起的。
@PWMZ_6687
给你改了下,工作正常。参考以下
STM32_Proj.zip
@张世争 我也解决了,放在硬件初始化就没事,我看看你是怎么弄的
@张世争 感谢你耐心的协助解决问题
@张世争 把钩子函数调回线程使用
@张世争 你把空闲钩子函数放到,线程当中,其他线程有问题,也会进去喂狗,没什么意义了,目前用事件集又出现问题了唉