跑signal_sample.c的试验输出结果没有输出:rt_kprintf(“thread1 received sognal %d
“, sig);
但是切换DBG_LVL后就能输出,尝试了多个rt版本都是这样,线程的堆栈也增加到1024,也都一样
scheduler.c line 244
使能中断后无法运行到rt_thread_handle_sig(RT_TRUE);
/ check signal status /
rt_thread_handle_sig(RT_TRUE);
rt_hw_interrupt_enable(level);
在调用rt_thread_handle_sig(RT_TRUE)前使能中断会再次跳转到rt_schedule()调度,等到跳转回执行rt_thread_handle_sig(RT_TRUE)时,rt_current_thread已经被改变
LZ 使用的是哪个 BSP,用的哪个板子?
我在 QEMU 上测试正常。
建议 LZ 值保留该代码,移除其它所有不相关的新增代码,保留 RT-Thread bsp 原样,再测试。
[attach]11650[/attach]
LZ 使用的是哪个 BSP,用的哪个板子?
我在 QEMU 上测试正常。
STM32F411CEU6核心板,使用的是stm32f411-st-nucleo的bsp,用CubeMX略微调整了MCU的一些初始化,更新了hal库。只加入了signal_sample的示例代码,没有其他任何新增代码。
后来还尝试了STM32F103C8核心板,也是一样的现象。
直接用MCU仿真的
LZ 使用的是哪个 BSP,用的哪个板子?
我在 QEMU 上测试正常。
考虑到移植可能出现的问题,所以我刚才在野火的103和429上也做了同样的测试。只加入signal_sample示例代码,打开内核中的signal。也都无法得到正常响应信号的结果。