查看编译出来的二进制文件,第一个双字是栈地址,第二个双字最低位值为1,说明程序运行后CPU处在Thumb模式。 我的问题是后面会不会切换到ARM模式?切换的话堆栈是怎么切换的(MSP/PSP)? |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
评分
查看全部评分
所以应该是Flash里的值LSB为1,取来后到PC时LSB被清零了。
不知道是不是?
仿真器调试的时候,PC值LSB位值是0,应该是ARM模式吧?
我记得区分ARM还是Thumb就是依靠PC的LSB,0是ARM模式,1是Thumb。而且设置堆栈设置的就是MSP,而不是PSP,应该是ARM模式吧。
大神有没有什么资料我可以去看下?
刚看了下,LR里的LSB是1。
但是HardFault里判断MSP和PSP的代码是(LR&4)。不知道该怎么理解。
嗯,谢谢你。我准备看下ARM Cortex-M0相关资料作进一步了解。