| 已解决。 unsigned char w25q64spi_write(unsigned char d)
 {
 SPI1->DR;
 SPI1->DR = d;
 while (0 == (SPI1->SR & MASK_RXNE)) {}
 return SPI1->DR;
 }
 这个函数改成这样:
 unsigned char w25q64spi_write(unsigned char d)
 {
 SPI1->DR;
 *((unsigned char *)&SPI1->DR) = d;
 while (0 == (SPI1->SR & MASK_RXNE)) {}
 return SPI1->DR;
 }
 就可以了。
 说明:ST的新MCU的SPI带有FIFO。当传输位数小于等于8时,如果对DR进行16BIT写,它会把这个16BIT变成多个传输放到FIFO中。
 
 |