STM32 SPI经过Keil编译优化后产生的问题

[复制链接]
4182|3
 楼主| 爱国道人 发表于 2010-2-17 13:05 | 显示全部楼层 |阅读模式
大家好,我用的是Keil UV4 MDK4.0 的编译器,用STM32 的SPI接口与CC2420通信时,发现程序未做优化时(LEVEL 0),MISO能正常接收信息,优化后(LEVE03),MISO接收的信息都是错误的,不知道是什么原因,难道KEIL的优化功能正有BUG?

BYTE SPIPut(BYTE v)
{  
  
   while(!SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE));
   SPI_I2S_SendData(SPI2,v);
   while(!SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE));
   return SPI_I2S_ReceiveData(SPI2);   
}

BYTE SPIGet(void)
{  
  
   while(!SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE));
   SPI_I2S_SendData(SPI2,0x00);
   while(!SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE));
   return SPI_I2S_ReceiveData(SPI2);   
}

我用的是STM32103FRBT6和STM32103FZET6;SPI1和SPI2都做了试验,都存在这种问题
不知道大家谁能分析一下原因。
 楼主| 爱国道人 发表于 2010-2-17 13:28 | 显示全部楼层
顺便说下,SPI的各种速率都试过了。时钟极性和边沿采样都是正确的
Simon21ic 发表于 2010-2-18 15:32 | 显示全部楼层
Keil也有这个BUG?
IAR的老版本也有类似BUG,8过偶提出后,新版本里改掉了
具体原因LZ自己分析,相信不难找到
winloop 发表于 2010-2-18 16:25 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

87

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部