STM32
直播中

李明聪

7年用户 1104经验值
私信 关注
[问答]

如何处理STM32的HAL库函数返回异常问题?

(1)官方提供的例程里面,例如返回的结果不是 HAL_OK 的结果,一般直接跳转到 错误处理的函数里面了。这样写的目的是给开发者根据实际情况自己写异常处理代码。
(2)比较现实是,在项目中,如果STM32运行死机了,是很可能可以在这种 库函数运行返回值不是 HAL_OK 中进行故障定位的。
(3)问题是 一旦出现了这种返回值异常的错误,记录在哪里比较好?芯片自带FLASH区域?EEPROM?在人工干预重启后可以读取出这个结果而且通过串口上报到服务器上,这样就可以远程定位故障。
(4)直属上司类比的给我讲 安卓手机开发有 buge……之类的崩溃记录工具,设备端的STM32是否可以利用同样的手段去记录出错日志?所以引出了我这里想展开讨论的话题。
(5)因为我用FreeRTOS开了5个任务,开启了看门狗,只在其中一个最可能卡死的循环体中放置了喂狗代码,但是通常不起作用,所以我才想起记录错误日志的方案。

回帖(1)

王涛

2024-4-17 16:45:06
处理STM32的HAL库函数返回异常问题可以采取以下步骤:

1. 在官方提供的例程中,通常会将返回值不是HAL_OK的情况直接跳转到错误处理函数中。这样做的目的是为了让开发者能够根据实际情况自己编写异常处理代码。可以根据实际需求,在错误处理函数中添加相应的处理逻辑,比如输出日志、重启系统等。

2. 在项目中,如果STM32死机了,可以尝试在库函数返回值不是HAL_OK的地方进行故障定位。可以使用调试器、打印日志等方法,对代码执行过程进行跟踪和分析,以确定引起死机的原因。

3. 当出现返回值异常错误时,可以将这些异常记录在芯片自带的FLASH区域或者EEPROM中。在人工干预重启后,可以读取这些记录,并通过串口将记录上报到服务器上。这样,可以通过远程定位故障,更好地分析和解决问题。

4. 对于安卓手机开发中的bug和崩溃问题,可以将其类比到STM32开发中的异常处理。类似于安卓手机开发中的bug处理方式,我们也可以通过记录日志、异常定位等方式来解决STM32的异常问题。

总体来说,处理STM32的HAL库函数返回异常问题需要根据实际情况进行分析和处理。可以借鉴其他领域的经验和方法,结合STM32的特点来制定合适的异常处理策略。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分