stm32 的spi标志问题

[复制链接]
2972|6
 楼主| oliver123 发表于 2012-5-19 15:23 | 显示全部楼层 |阅读模式
小弟写了个spi的程序,在mdk用j-link8仿真的过程中,f5全速运行的时候,通不过,停在while(statue==RESET);这个地方,statue的值是0x00,但是f10单步运行的时候就没问题,statue的值是0x01,正常。请问这是什么问题?程序如下
void spi_write(u8 data)
{
u8 statue;
statue=SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE);
while(statue==RESET);
SPI_I2S_SendData(SPI2,data);
}
pattywu 发表于 2012-5-19 15:44 | 显示全部楼层
从你的程序中,如果SPI的状态在开始时0,即是100年之后,while(statue==RESET);这个条件也是成立的。
     ^_^.
 楼主| oliver123 发表于 2012-5-19 16:05 | 显示全部楼层
不会的,配置之后txe位的值是1,所以函数的返回值即statue是0x01
pattywu 发表于 2012-5-19 16:21 | 显示全部楼层
statue=SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE);
while(statue==RESET);

老兄,加强基础吧。
 楼主| oliver123 发表于 2012-5-19 18:42 | 显示全部楼层
4# pattywu

楼上老兄,小弟愚笨,还是不懂你什么意思
aozima 发表于 2012-5-19 19:24 | 显示全部楼层
4# pattywu  

楼上老兄,小弟愚笨,还是不懂你什么意思
oliver123 发表于 2012-5-19 18:42

  1. status = 1;
  2. while(status == 1);
tianyuhui 发表于 2012-5-20 13:55 | 显示全部楼层
改成:
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);
你的status 是个局部变量,一开始被赋值为1了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

33

帖子

0

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