打印
[STM32F1]

cortex-m3堆栈的切换

[复制链接]
楼主: pangb
手机看帖
扫描二维码
随时随地手机跟帖
21
pengf| | 2022-12-10 13:34 | 只看该作者 回帖奖励 |倒序浏览
两个堆栈指针是为多任务而设计的
假设只用一个堆栈的话。在一个多任务系统中,有2个任务,任务1最大使用100字节堆栈,任务2最大使用100字节堆栈,如果进入中断最大要使用1000字节,那么至少要分配1100字节堆栈给任务1,分配1100字节给任务2.那么总堆栈消耗2200字节。  ----只有一个堆栈时,每个任务都要给中断准备中断堆栈空间
如果有2个堆栈的话,任务1只要分配100字节堆栈,任务2分配100字节堆栈。中断使用主堆栈1000字节。那么总共消耗的堆栈就只有1200字节了。   ----2个堆栈的话,任务堆栈只需要分配自己的堆栈就好了,所有中断共用一个主堆栈。
假设有n个任务。那么就省掉了(n-1)个中断堆栈大小

使用特权

评论回复
22
renyaq| | 2022-12-10 13:37 | 只看该作者
看不懂代码啊

使用特权

评论回复
23
zhanghqi| | 2022-12-10 13:40 | 只看该作者
不太明白堆栈怎么切换

使用特权

评论回复
24
zwll| | 2022-12-10 13:44 | 只看该作者

M3和M0的模式还不同吗?

使用特权

评论回复
25
renyaq| | 2022-12-10 13:46 | 只看该作者

涉及到切换吗 是不是仅仅地址不对啊

使用特权

评论回复
26
zhenykun| | 2022-12-10 13:48 | 只看该作者
真的看不懂代码

使用特权

评论回复
27
Henryko| | 2022-12-10 15:25 | 只看该作者
M3有两种模式,线程模式和handler模式,handler模式下只能用MSP指针

使用特权

评论回复
28
鹿鼎计| | 2024-5-15 14:57 | 只看该作者
在什么情况下需要考虑并以这种方式应用两个堆栈指针

使用特权

评论回复
29
lxs0026| | 2024-8-31 13:57 | 只看该作者
堆栈切换的主要机制是通过控制寄存器中的堆栈指针和堆栈选择寄存器来实现的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则