打印

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

[复制链接]
3500|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

粉丝