caowent
caowent
This guy hasn't written anything yet

注册于 1 year ago

回答
0
文章
0
关注者
0


我在11楼的回复,可以参考下

深入分析了下,找到问题了。
最后是HAL库的“HAL_GPIO_DeInit”函数实现上有漏洞导致的问题。
STM32F4HAL库V1.7.7(CUBE F4 PACK V1.24.2/ CUBEMX V5.50 以上)已经修复该漏洞。
release note:Update GPIO initialization sequence to avoid unwanted pulse on GPIO Pin’s。
具体触发问题的流程:
1.rw007有一个数据发送线程,该线程可以通过INT/BUSY引脚外部中断唤醒。
2.RW007数据发送线程正常发送数据时,INT/BUSY引脚复用为BUSY功能,用于表征RW007模块的忙碌状态。
此过程中禁用了INT/BUSY的外部中断,防止在数据发送过程中BUSY信号触发本身线程,导致本身线程无限循环。
3.事实是在发送数据钱关中断调用HAL_GPIO_DeInit,由于存在漏洞会置位EXTI的Pending位,导致发完数据再次
打开外部中断的时候,直接触发了外部中断,直接唤醒了本线程,导致无限循环。
4.由于发送线程优先级是9 高于 wifi初始化线程10,所以会出现无响应。
5.解决方法就是把STM32F4HAL库更新到V1.7.7以上。

回到
顶部

发布
问题

投诉
建议