打印

stm32 的spi标志问题

[复制链接]
1828|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);

老兄,加强基础吧。

使用特权

评论回复
5
oliver123|  楼主 | 2012-5-19 18:42 | 只看该作者
4# pattywu

楼上老兄,小弟愚笨,还是不懂你什么意思

使用特权

评论回复
6
aozima| | 2012-5-19 19:24 | 只看该作者
4# pattywu  

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

status = 1;
while(status == 1);

使用特权

评论回复
7
tianyuhui| | 2012-5-20 13:55 | 只看该作者
改成:
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);
你的status 是个局部变量,一开始被赋值为1了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

33

帖子

0

粉丝