你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于FREERTOS的疑问

[复制链接]
jxbjxbjxb 提问时间:2017-8-8 11:58 /
FREERTOS建了两个任务,成功运行了,但是,每次运行2个小时左右就死机,这是什么情况,是堆栈小的原因吗?
收藏 评论4 发布时间:2017-8-8 11:58

举报

4个回答
wuqt 回答时间:2017-8-8 13:24:25
本帖最后由 wuqt 于 2017-8-9 13:39 编辑

这个原因就多了,先在idle task设个led看看是不是系统死了,把statck overflow 的 hook函数打开,监视一下是不是堆栈溢出了,还有是不是hardfault了

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

kylongmu 回答时间:2017-8-8 17:05:05
默认堆栈比较小,如果有sprintf,或者printf长一些的参数就会出现你这种状况。另外要看你其它代码是否有问题。干净的FreeRTOS我测过的4个线程6个队列,运行2天都没问题。
jxbjxbjxb 回答时间:2017-8-9 10:11:25
wuqt 发表于 2017-8-8 13:24
这个原因就多了,先在idle task设个led看看是不是系统死了,把heap overflow 的 hook函数打开,监视一下是 ...

使用了uxTaskGetStackHighWaterMark函数查询任务栈没有溢出,请问一下,如果configTOTAL_HEAP_SIZE定义的小了,是不是开始时,任务也可以运行,只是一段时间后会导致死机?
wuqt 回答时间:2017-8-9 13:49:30
jxbjxbjxb 发表于 2017-8-9 10:11
使用了uxTaskGetStackHighWaterMark函数查询任务栈没有溢出,请问一下,如果configTOTAL_HEAP_SIZE定义的 ...

Heap太小只会分配不到内存返回-1,看你是不是死在分配不到内存了,很可能运行久了内存碎片太多导致分不到大块的内存。刚开始运行没问题一般来说栈是够的,不过还是要监视一下是不是死在
vApplicationStackOverflowHook()里面了。

评分

参与人数 1ST金币 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版