STM32(Cortex-M) 双堆栈MSP/PSP科普

这篇具有很好参考价值的文章主要介绍了STM32(Cortex-M) 双堆栈MSP/PSP科普。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

https://blog.csdn.net/Guet_Kite/article/details/76020069
https://blog.csdn.net/zhuimeng_ruili/article/details/118163303

MSP/PSP是什么?作用?

MSP主堆栈指针,PSP进程堆栈指针。

MSP:复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)
PSP:由用户的应用程序代码使用。
两个堆栈指针,同一时刻只能用一个。

作用:提升程序健壮性。一定程度上保证应用的数据(栈)空间不会溢出到操作系统数据(栈)空间;

运行时行为?

无操作系统:
程序复位后运行使用的一直是MSP,异常或中断、程序运行均使用MSP。
有操作系统:
程序复位运行时,使用的一直是MSP,在任务开始运行时,osKernelStart->....->vPortStartFirstTask(portasm.s/freertos),将任务栈push到PSP,并切换到PSP。
在发生异常或中断时,CPU自动进入Hanlder模式,CPU会自动设置CONTROL对应bit[1]为0,强制使用MSP。
OS或程序将CONTROL bit[1]设置为1,则进入线程模式,使用PSP。

栈空间来源?

IAR中在Options-->Linker-->Config-->Edit中更改栈空间大小,也可以直接在icf文件中更改。

编译生成的bin文件的首4个字节为栈指针SP/MSP,带操作系统的话PSP由各个任务提供。文章来源地址https://www.toymoban.com/news/detail-850231.html

到了这里,关于STM32(Cortex-M) 双堆栈MSP/PSP科普的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM 学习笔记2 初识Cortex-M33与STM32G4

    ARM Cortex-M系列处理器的差异与联系:【ARM Cortex-M 系列 1 – Cortex-M0, M3, M4, M7, M33 差异】 两本书籍的英文版和中文版 Definitive Guide to Arm® Cortex®-M23 and Cortex-M33 Processors Arm Cortex-M23和Cortex-M33微处理器权威指南 ST的介绍页 Arm® Cortex®-M33概述 STM32G474RE 采用STM32G474RE MCU的STM32 Nucleo-64开

    2024年01月25日
    浏览(52)
  • STM32出现Error:Flash Download failed - “Cortex-M4“解决办法

    问题出现背景:         使用robomaster A型开发板出现Error:Flash Download failed - \\\"Cortex-M4\\\"问题 问题现象: 并且在keil5中Debug下的flah download为空 问题分析:         缺少开发板芯片,需要重新下载 。并且导入到了keil5中 问题解决过程:   1.下载芯片安装包 官网:Arm Keil | Dev

    2024年02月06日
    浏览(48)
  • STM32使用HAL库中外设初始化MSP回调机制及中断回调机制详解

    在STM32的HAL库使用中,会发现库函数大都被设计成了一对: HAL_PPP/PPPP_Init HAL_PPP/PPPP_MspInit 而且HAL_PPP/PPPP_MspInit函数的defination前面还会有__weak 上面的PPP/PPPP代表常见外设的名称为3个字符或者4个字符 怎么理解这个设计呢? 2.1 结论 首先说结论: HAL_PPP/PPPP_Init 是与具体芯片

    2024年02月13日
    浏览(58)
  • 【单片机】STM32 ARM Cortex-M0 微控制器特性概述 双排 TSSOP封装好手工焊接的STM32芯片,双排

    STM32F070CB STM32F070RB STM32F070C6 STM32F070F6 在嵌入式系统和物联网应用中,ARM Cortex-M0 微控制器以其强大的性能和丰富的功能而备受瞩目。本文将介绍该微控制器的主要特性,使读者更好地了解其适用范围和潜在应用。 ARM® 32位 Cortex®-M0 CPU 频率高达 48 MHz Flash 存储器 32 到 128 Kbytes

    2024年01月18日
    浏览(48)
  • 解决stm32芯片锁死 出现Error:Flash Download Failed-“Cortex-M3“

    打开MDK软件使用SW当时连接单片机发现能连接到板子 显示已经连接上 但是再下载的时候出现Error:Flash Download Failed-\\\"Cortex-M3\\\"下载错误 首先排除硬件连接问题,能够连接到stm32说明硬件连接没有问题,再排除软件编译错误,最后预估可能是硬件stm32芯片由于脉冲电平的干扰导致芯

    2024年02月15日
    浏览(95)
  • 在MDK调试STM32出现“could not stop cortex-m device”软件解决办法

    这个问题出现的原因很多,答案最多的都是硬件或配置原因,总结为: 1.BOOT0和BOOT1的接法; 2.NRST引脚在开机过程出现低电平导致片子处于在reset状态; 3.或者是编译选项里你没选器件,或者是下载选项里没选器件; 4.主频超频了; 5.编辑器版本原因; 6.调试过程没关闭看门狗

    2024年02月13日
    浏览(100)
  • STM32F051C8T6 LQFP-48 ARM Cortex-M0 32位微控制器-MCU

    STM32F051C8T6微控制器在物联网领域有诸多应用案例,以下是一些典型的应用场景:   1. 智能家居:在智能家居系统中,STM32F051C8T6可以用于控制智能家电,如智能灯具、智能门锁、智能空调等。通过无线通信模块(如ESP8266)连接到家庭局域网,实现远程控制和智能化管理。  

    2024年04月22日
    浏览(41)
  • STM32芯片flash被锁导致Error Flash Download failed Cortex-M4,解决办法(全)亲测有效

    STM32芯片flash被锁导致Error: Flash Download failed - \\\"Cortex-M4\\\",解决办法(全)亲测有效🤩! 方法1:由于Keil 中debug的仿真器配置出错导致的下载失败(这种问题虽然是低级错误,但我还是觉得非常有必要确认一下自己的配置有没有出错) 方法2:使用第三方烧录软件,通过串口烧录

    2024年02月12日
    浏览(54)
  • 嵌入式笔记1.1 ARM Cortex-M3M4简介

    目录 微型计算机的硬件共性结构及基本性能指标 关于存储器的介绍 微型计算机的基本性能指标 1. 字长 2. 主频 3. 存储容量 4. 外设扩展能力 5. 软件配置情况 Arm Cortex 系列微处理器系列概述 Arm Cortex-A 系列处理器 Arm Cortex-R 系列处理器 Arm Cortex-M 系列处理器 Cortex-M3 和 Cortex-M4简

    2024年03月27日
    浏览(53)
  • STM32内核——Cortex M3

    目录 前言 一、STM32系统架构 二、Cortex M3内核 1、NVIC(嵌套向量中断控制器) 2、存储器保护单元(MPU) 3、总线接口 4、寄存器(重点) 通用寄存器 特殊功能寄存器 5、流水线 三、存储结构(重点) 1、存储器空间分配 2、位带操作 3、端模式 4、非对齐访问  四、工作模式和

    2024年02月20日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包