你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F0运行在什么模式下?

[复制链接]
everkimage 提问时间:2018-7-6 09:06 /
查看编译出来的二进制文件,第一个双字是栈地址,第二个双字最低位值为1,说明程序运行后CPU处在Thumb模式。
我的问题是后面会不会切换到ARM模式?切换的话堆栈是怎么切换的(MSP/PSP)?
收藏 评论9 发布时间:2018-7-6 09:06

举报

9个回答
斜阳 回答时间:2018-7-6 12:29:10
stm32没有arm模式

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

everkimage 回答时间:2018-7-6 17:31:54
调试的时候,还没有运行时(不是停在main函数)PC值LSB是0。
所以应该是Flash里的值LSB为1,取来后到PC时LSB被清零了。
不知道是不是?
andey 回答时间:2018-7-9 17:22:40
提示: 作者被禁止或删除 内容自动屏蔽
everkimage 回答时间:2018-7-10 08:45:38
andeyqi 发表于 2018-7-9 17:22
不会切换到ARM模式,只支持Thumb模式,你可以改下reset函数的地址强制切到ARM模式,应该会出现hardfault ...

仿真器调试的时候,PC值LSB位值是0,应该是ARM模式吧?
andey 回答时间:2018-7-10 09:10:21
提示: 作者被禁止或删除 内容自动屏蔽
everkimage 回答时间:2018-7-10 09:23:44
andeyqi 发表于 2018-7-10 09:10
不是,PC的值LSB位是0是正常的PC是两字节对齐的,你可以看下跳转函数的地址,这个地址的LSB应该是1,PC跳 ...

我记得区分ARM还是Thumb就是依靠PC的LSB,0是ARM模式,1是Thumb。而且设置堆栈设置的就是MSP,而不是PSP,应该是ARM模式吧。
大神有没有什么资料我可以去看下?
everkimage 回答时间:2018-7-10 09:32:48
andeyqi 发表于 2018-7-10 09:10
不是,PC的值LSB位是0是正常的PC是两字节对齐的,你可以看下跳转函数的地址,这个地址的LSB应该是1,PC跳 ...

刚看了下,LR里的LSB是1。
但是HardFault里判断MSP和PSP的代码是(LR&4)。不知道该怎么理解。
andey 回答时间:2018-7-10 15:41:05
提示: 作者被禁止或删除 内容自动屏蔽
everkimage 回答时间:2018-7-11 09:06:34
andeyqi 发表于 2018-7-10 15:41
可能不知道你的应用场景,这个判断PSP还是MSP的方法我也没有理解,我理解的一般在逻辑程序下,一般使用的 ...

嗯,谢谢你。我准备看下ARM Cortex-M0相关资料作进一步了解。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版