因此,知道 HAL 被认为是“慢”的事实后,我决定使用直接寄存器访问在我的程序中重写一个小例程。我决定看看,我赢得了什么。令人惊讶的是,我真的输了。
所以代码是
this->chip_select();
HAL_SPI_Transmit(hspi, spi_array, 3, HAL_MAX_DELAY);
this->chip_deselect();
this->chip_select();
SPI1->DR = spi_array[0];
while (!(SPI1->SR & SPI_SR_TXE));
SPI1->DR = spi_array[1];
while (!(SPI1->SR & SPI_SR_TXE));
SPI1->DR = spi_array[2];
while(SPI1->SR & SPI_SR_BSY);
this->chip_deselect();
所以首先我使用 HAL 发送 3 个字节,然后使用寄存器和相同的 SPI 发送相同的 3 个字节。
怎么来的?用寄存器做事不应该更快吗?
PS stm32是l071,32 Mhz,SPI是16Mhz。

