打印

关于MOVT.W指令的问题

[复制链接]
3942|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mjj123|  楼主 | 2010-7-11 12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mjj123 于 2010-7-11 12:18 编辑

stm32上电后运行在特权级+MSP+线程模式
我们执行一下指令使程序运行在用户级下
MRS     R0, CONTROL
   ORR     R0, R0, #0x01         
   MSR     CONTROL, R0

在用户级下再测试一下代码  
MOVW.W  R0,   #0x161C
MOVT.W  R0,   #0x0800

我得到的结果是(STM32) R0寄存器中的值为0x161C,也就是MOVT.W  R0,   #0x0800没有执行,被看做是NOP指令了。
而在LPC1768这两条指令运行正常。
希望你们帮我验证下,是我芯片的问题呢还是stm32系列的通病。
谢谢各位了
沙发
mjj123|  楼主 | 2010-7-15 10:21 | 只看该作者
st公司的技术支持呢!!!!!!!!!!!!!
给个解释啊!!!!!!!!!!!!!!!!!!

使用特权

评论回复
板凳
香水城| | 2010-7-15 10:33 | 只看该作者
对不起,没有研究过Cortex-M3的指令。

请问MOVT.W是什么指令,用户级下运行与特权级下运行有什么不同?

使用特权

评论回复
地板
香水城| | 2010-7-15 10:38 | 只看该作者
st公司的技术支持呢!!!!!!!!!!!!!
给个解释啊!!!!!!!!!!!!!!!!!!
mjj123 发表于 2010-7-15 10:21


不用打这么多惊叹号,如果你的项目需要ST的技术支持,请直接通过代理商与ST的FAE见面,他们会帮你解决的。

如果你需要研究Cortex-M3的指令系统,可以找ARM公司的技术支持。

使用特权

评论回复
5
mjj123|  楼主 | 2010-7-19 11:31 | 只看该作者
不好意思,我的意思是说
MOVW.W  R0,   #0x161C
MOVT.W  R0,   #0x0800
这两条指令是加载32位数到R0中,测试结果是在LPC1786处理器上这两条指令时正常的!而在STM32F103VET6处理器上运行不正常。
那我应该是找谁呢?这两个都是用的Cortex-M3第二版,相同的指令,不同的执行效果啊。

使用特权

评论回复
6
IJK| | 2010-7-19 11:50 | 只看该作者
看上去有点意思,什么时候有空我来试试看.

使用特权

评论回复
7
IJK| | 2010-7-19 13:33 | 只看该作者
不好意思,我的意思是说
MOVW.W  R0,   #0x161C
MOVT.W  R0,   #0x0800
这两条指令是加载32位数到R0中,测试结果是在LPC1786处理器上这两条指令时正常的!而在STM32F103VET6处理器上运行不正常。 那我应该是找谁呢? ...
mjj123 发表于 2010-7-19 11:31


我在STM32上面试验了一下,感觉结果正确,在用户模式 执行这2条指令后 R0 等于 0x0800161C

使用特权

评论回复
8
mjj123|  楼主 | 2010-7-19 19:46 | 只看该作者
回复7楼,你使用的是哪个型号的芯片呢,
我现在不能确定是我这款型号的问题,还是我板子的问题。

使用特权

评论回复
9
IJK| | 2010-7-20 09:25 | 只看该作者
回复7楼,你使用的是哪个型号的芯片呢,
我现在不能确定是我这款型号的问题,还是我板子的问题。
mjj123 发表于 2010-7-19 19:46


我用的STM32的型号,相当于STM32F101ZE。我觉得问题应该跟板子关系不大。
建议LZ可以用simulator试试看。

使用特权

评论回复
10
yybj| | 2010-7-23 13:08 | 只看该作者
没试过,不过可以试下

使用特权

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

本版积分规则

12

主题

54

帖子

0

粉丝