OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6803|回复: 4

关于stm32调用asm跑飞

[复制链接]

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2012-11-20
在线时间
0 小时
发表于 2013-3-7 02:55:17 | 显示全部楼层 |阅读模式
在main.c里面写了一个nop
   __asm void nop(void)
{
    NOP;

}

然后到main.h里extern  __asm void nop(void) ;
其他的C include"main.h" 后想调用nop()


可是执行nop()时,程序就跑飞了。飞到1个函数里了。。明明没调用这个函数。。

请教这个是怎么回事啊。




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-3-7 05:25:24 | 显示全部楼层
业余程序玩家。
回复 支持 反对

使用道具 举报

3

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2012-12-25
在线时间
3 小时
发表于 2013-3-7 09:58:15 | 显示全部楼层
回复【楼主位】formatu:
---------------------------------
我也碰到同样的问题,开始以为是编译器字对齐的问题,后面我用了纯汇编文件重写了这个函数,还是有这个问题。查了查文档,找到如下说明
NOP
Generates the ARM no-operation code.

Syntax   NOP 
CPU   ARM9E only  
Description   Generates the preferred ARM no-operation code. Cannot be used conditionally.  

STM32f10x是Cortex-M3内核,自然不能用了。不过,很想知道M3内核下应该怎么弄。
回复 支持 反对

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2012-11-20
在线时间
0 小时
 楼主| 发表于 2013-3-7 11:41:38 | 显示全部楼层
rebuild all. 试过。不行。。 看来楼上说的是对的。不能用NOP。
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2013-3-7 13:16:19 | 显示全部楼层
1. 既然用汇编, 就应该要学会反汇编单步调试.
2. 可以参考 MDK 的文档, 看看 __asm  的用法, 也可以参考这里 http://www.openedv.com/posts/list/10479.htm 14 楼.
3. nop 在 mdk 里面应该是有内建支持的, 不过有时好像会被优化掉. 你查下文档, 自己做一下实验.
https://github.com/roxma
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-23 04:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表