硬汉嵌入式论坛

 找回密码
 立即注册
查看: 377|回复: 6
收起左侧

[μCOS-II] ucos-ii 进入到 App_Fault_ISR

[复制链接]

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2024-1-4 19:35:46 | 显示全部楼层 |阅读模式
RT,在F030CC上面跑了个ucos-ii。运行一段时间就进入到 App_Fault_ISR 这个死机了。

奇怪的是,只有全速运行才会进入,在debug模式下,F11单步就一直不会进入到这个异常中。
这种情况,是没有移植好,还是应用代码有问题呀
回复

使用道具 举报

6

主题

636

回帖

654

积分

金牌会员

积分
654
QQ
发表于 2024-1-4 20:51:50 | 显示全部楼层
简化应用代码跑看看是否还会存在死机问题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-1-5 08:42:26 | 显示全部楼层
这种的一般是延迟类API没有正常执行导致的。

可以所有外设初始化都注释掉,并且仅创建一个任务测试。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
 楼主| 发表于 2024-1-5 09:04:44 | 显示全部楼层
yklstudent 发表于 2024-1-4 20:51
简化应用代码跑看看是否还会存在死机问题

搞个测试代码不会有问题。现在发现可能是TIM3/TIM16 这2个定时器触发的问题。
F5运行时,在等待这个sys_sem1信号量时会进入到 App_Fault_ISR。
而sys_sem1这个信号量是在 TIM16 的中断函数 BSP_IntHandler_tim16 里面调用函数发出来的。
把断点打在 OSSemPost(sys_sem1); 这个OSSemPost()函数里面的话,都不会死机了,都能顺利等待sys_sem1的发送。
但只要是F5运行,就会死

下载 (1).png

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-1-6 09:49:36 | 显示全部楼层
jplzl10000 发表于 2024-1-5 09:04
搞个测试代码不会有问题。现在发现可能是TIM3/TIM16 这2个定时器触发的问题。
F5运行时,在等待这个sys_ ...

设置NVIC的重点优先级分组为4, 即仅有抢占优先级,你的这个定时器中断设置为最高的0级抢占优先级。

如果这样还有问题,你的这个信号量处理逻辑有问题。我看你的截图里面还有手动SemSet这种操作。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
 楼主| 发表于 2024-1-18 21:13:27 | 显示全部楼层
eric2013 发表于 2024-1-6 09:49
设置NVIC的重点优先级分组为4, 即仅有抢占优先级,你的这个定时器中断设置为最高的0级抢占优先级。

...

堆栈问题啊  调用任务创建时栈顶参数给错了。栈是向下生长的。结果有个任务实际上就只分配了一个单位的堆栈
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-1-19 08:52:55 | 显示全部楼层
jplzl10000 发表于 2024-1-18 21:13
堆栈问题啊  调用任务创建时栈顶参数给错了。栈是向下生长的。结果有个任务实际上就只分配了一个单位的 ...

这操作。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 15:18 , Processed in 0.238247 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表