ucos-ii 进入到 App_Fault_ISR
RT,在F030CC上面跑了个ucos-ii。运行一段时间就进入到 App_Fault_ISR 这个死机了。奇怪的是,只有全速运行才会进入,在debug模式下,F11单步就一直不会进入到这个异常中。
这种情况,是没有移植好,还是应用代码有问题呀
简化应用代码跑看看是否还会存在死机问题 这种的一般是延迟类API没有正常执行导致的。
可以所有外设初始化都注释掉,并且仅创建一个任务测试。 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运行,就会死
jplzl10000 发表于 2024-1-5 09:04
搞个测试代码不会有问题。现在发现可能是TIM3/TIM16 这2个定时器触发的问题。
F5运行时,在等待这个sys_ ...
设置NVIC的重点优先级分组为4, 即仅有抢占优先级,你的这个定时器中断设置为最高的0级抢占优先级。
如果这样还有问题,你的这个信号量处理逻辑有问题。我看你的截图里面还有手动SemSet这种操作。 eric2013 发表于 2024-1-6 09:49
设置NVIC的重点优先级分组为4, 即仅有抢占优先级,你的这个定时器中断设置为最高的0级抢占优先级。
...
堆栈问题啊;P调用任务创建时栈顶参数给错了。栈是向下生长的。结果有个任务实际上就只分配了一个单位的堆栈 jplzl10000 发表于 2024-1-18 21:13
堆栈问题啊调用任务创建时栈顶参数给错了。栈是向下生长的。结果有个任务实际上就只分配了一个单位的 ...
这操作。。。
页:
[1]