本年度最灵异事件---STM32调试记

2019-12-25 18:52发布

如此强大的Cortex-M3,居然有这样的问题,是我的配置不正确还是芯片Bug呢???

今天研究了一天STM32的SPI,正好它有两个SPI,做了自收发测试,没问题,然后找了个SPI的屏幕,死活无法控制,用IO模拟SPI总线却没有问题,悲愤一天,放弃之.
晚上继续拿出来研究,把每个API都研究了一遍,没发现问题,实在受不了了,到网上查资料,找了个别人的程序,如下:
u8 SPI1_SendByte(u8 byte)
{
  /* Loop while DR register in not emplty */
  while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

  /* Send byte through the SPI1 peripheral */
  SPI_I2S_SendData(SPI1, byte);

  /* Wait to receive a byte */
  while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

  /* Return the byte read from the SPI bus */
  return SPI_I2S_ReceiveData(SPI1);
}

依照正常的操作,下面两句话是可以不要的,因为对LCD的操作是单向的,没必要返回数据,所以我一直没有下面两句话,然后抱着试一试的心理,把下面两句话加上之后,居然工作正常了,把数据手册重新看了一遍,还是没找到答案,我用AVR时从来不加这两句的,到了STM32却非加不可,这个是什么原因呢???

路过的看客,知道答案的就指点下小弟吧.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。