rtthread_startup() => rt_hw_local_irq_disable() 关闭了全局中断
rt_system_scheduler_start() => rt_hw_context_switch_to() => CPSIE I 开启了全局中断
上述开关中断流程,我觉得没有问题。。
但是在二者之间,有如下的调用流程
rt_hw_board_init()
=> rt_system_heap_init()
=> rt_memheap_init()
=> rt_object_init()
=> rt_spin_unlock_irqrestore
=> rt_hw_interrupt_enable
又把全局中断打开了,,既然中间会打开全局中断,,那一开始的关闭全局中断又有什么意义呢??
离线
抱歉,,是我搞错了,,rt_hw_interrupt_enable() 并不是直接打开中断,,而是将中断屏蔽设置成指定值。。
离线
你看一下rt_hw_interrupt_enable和rt_hw_interrupt_disable的具体实现,关中断是的确关了,开中断是恢复关中断之前的状态,不一定有打开
离线