众所周知,STM32是一款性价比比较高的ARM芯片,并且它拥有极为丰富的外设,方便实现大部分的功能。2014年,意法半导体公司推出HAL(Hardware Abstracted Library)和配套的STM32CubeMX,更是让STM32的开发变得易如反掌,使得繁复的初始化代码仅需简单配置即可完成,这是一次重大的变革。然而,HAL库中的某些功能的确让人摸不着头脑,比如我们今天的主角SPI。
关于SPI
SPI是Motorola推出的一种通信接口,它具有很多优点,这里不赘述,但是在HAL中,使用这个模块对应的库函数并非易事,那么问题出在哪里呢?
SPI发送16位数据的问题
根据参考手册,STM32的SPI拥有一个16位的数据寄存器,记为DR,但是我们看HAL库的函数,以轮询发送为例
/**
* @brief Transmit an amount of data in blocking mode.
* @param hspi pointer to a SPI_HandleTypeDef structure that contains
* the configuration information for SPI module.
* @param pData pointer t