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

2019-07-19 21:18发布

同样的两份代码! [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) "; 调用main.c的SPI_Write_S(str, 4);

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
八度空间
1楼-- · 2019-07-19 23:50
 精彩回答 2  元偷偷看……
aleda303
2楼-- · 2019-07-20 03:01
你看你调用的 Delay 是不是同一个函数

还有你把编译器优化 去掉 再看看
老虎不吃人
3楼-- · 2019-07-20 06:51
回复【3楼】aleda303:
---------------------------------
优化是None, Delay就写了一个。。
正点原子
4楼-- · 2019-07-20 11:44
 精彩回答 2  元偷偷看……
冰QI淋
5楼-- · 2019-07-20 13:42
 精彩回答 2  元偷偷看……
正.点.原.子
6楼-- · 2019-07-20 14:09
这样子也可以?

一周热门 更多>