OpenEdv-开源电子网

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

神奇!IAR编译这么牛我也是醉了。。。。

[复制链接]

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2013-8-4
在线时间
3 小时
发表于 2014-7-30 10:10:48 | 显示全部楼层 |阅读模式
5金钱

同样的两份代码!

[mw_shl_code=c,true]void SPI_Write_S(u8 *pBuffer, u16 NumByteToWrite) { while(NumByteToWrite--) { SPI_SendByte(*pBuffer); pBuffer++; Delay(0xffff); } }[/mw_shl_code]


[mw_shl_code=c,true]void SPI_Write_Str(u8 *pBuffer, u16 NumByteToWrite) { while(NumByteToWrite--) { SPI_SendByte(*pBuffer); pBuffer++; Delay(0xffff); } }[/mw_shl_code]

注意看哦,只有函数名字不同,内部代码完全一样。

SPI_Write_S是放在main.c中得,而SPI_Write_Str是放在spi.c中的。


但是,当我在主程序中调用的时候。SPI_Write_S输出就很正常, 而SPI_Write_Str则出现各种丢包。。。。求解!


再加上实际运行结果,更有说服力:

u8 *str = "(B)\n";

调用main.c的SPI_Write_S(str, 4);



而调用spi.c的SPI_Write_Str(str, 4);



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

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-7-30 11:29:55 | 显示全部楼层
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-7-30 15:33:52 | 显示全部楼层
你看你调用的 Delay 是不是同一个函数

还有你把编译器优化 去掉 再看看
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2013-8-4
在线时间
3 小时
 楼主| 发表于 2014-7-30 19:45:57 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
优化是None, Delay就写了一个。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-7-30 22:19:08 | 显示全部楼层
不科学,围观...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-7-21
在线时间
26 小时
发表于 2014-9-25 18:02:47 | 显示全部楼层
问题解决了没?
回复

使用道具 举报

4

主题

125

帖子

1

精华

高级会员

Rank: 4

积分
870
金钱
870
注册时间
2014-8-7
在线时间
49 小时
发表于 2014-10-11 17:14:56 | 显示全部楼层
这样子也可以?
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2014-10-21
在线时间
0 小时
发表于 2014-11-25 18:04:13 | 显示全部楼层
请楼主上两段代码对应的汇编以正视听~~
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2014-11-26 10:17:17 | 显示全部楼层
我不相信,IAR会出这样的问题。
十有八九,是我们自己的问题。
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12687
金钱
12687
注册时间
2012-11-26
在线时间
3710 小时
发表于 2014-11-26 13:50:41 | 显示全部楼层
神奇。。。。
学无止境
回复

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1835
金钱
1835
注册时间
2014-12-4
在线时间
717 小时
发表于 2014-12-6 22:50:28 | 显示全部楼层
我也遇见过同样的函数,放在另一个函数后面可以编译通过 ,但是放在前面就提示超出存储 , 函数之间不存在调用关系
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2015-5-30
在线时间
2 小时
发表于 2016-3-26 13:31:23 | 显示全部楼层
什么鬼
回复

使用道具 举报

11

主题

1041

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3696
金钱
3696
注册时间
2011-5-23
在线时间
2008 小时
发表于 2016-3-26 15:16:26 | 显示全部楼层
函数调用前是否有声明?

贴汇编以正视听
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2016-3-31 09:16:47 | 显示全部楼层
在2个函数前加static试试看。
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

16

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2015-12-3
在线时间
54 小时
发表于 2016-3-31 10:14:40 | 显示全部楼层
我觉得应该是自己的问题
回复

使用道具 举报

16

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2015-12-3
在线时间
54 小时
发表于 2016-3-31 10:16:04 | 显示全部楼层
是不是头文件有问题?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 01:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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