STM32H7 HAL库错误内容!!!

stm32H7 hal库错误内容汇总:
1.

HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
函数内部有一个判断
if (hi2s->State == HAL_I2S_STATE_READY)  {
    __HAL_UNLOCK(hi2s);
    return  HAL_BUSY;
  }
函数
   HAL_StatusTypeDef HAL_I2SEx_TransmitReceive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pTxData, uint16_t *pRxData, uint16_t Size)
{
  if (hi2s->State == HAL_I2S_STATE_READY)
  {
    __HAL_UNLOCK(hi2s);
    return  HAL_BUSY;
  }
  中同样有

应该改为:

if (hi2s->State != HAL_I2S_STATE_READY)

2.我用的HAL库版本为V1.2.0;
其中Device中的STM32H743XX.h中寄存器定义错误。

#define SPI_I2SCFGR_WSINV_Pos       (12U)                                      
#define SPI_I2SCFGR_WSINV_Msk       (0x1U << SPI_I2SCFGR_WSINV_Pos)            /*!< 0x00001000 */
#define SPI_I2SCFGR_WSINV           SPI_I2SCFGR_WSINV_Msk                      /*!<Word select inversion                             */
#define SPI_I2SCFGR_FIXCH_Pos       (13U)                                      
#define SPI_I2SCFGR_FIXCH_Msk       (0x1U << SPI_I2SCFGR_FIXCH_Pos)            /*!< 0x00002000 */
#define SPI_I2SCFGR_FIXCH           SPI_I2SCFGR_FIXCH_Msk                      /*!<Fixed channel length in SLAVE                     */
#define SPI_I2SCFGR_DATFMT_Pos      (12U)                                      
#define SPI_I2SCFGR_DATFMT_Msk      (0x3U << SPI_I2SCFGR_DATFMT_Pos)           /*!< 0x00003000 */
#define SPI_I2SCFGR_DATFMT          SPI_I2SCFGR_DATFMT_Msk                     /*!<Data format   

在这里插入图片描述
跟寄存器定义不同。

所以最好使用新的固件库,但项目之前用的旧固件库,并且没有用到I2s。

发布了15 篇原创文章 · 获赞 0 · 访问量 285

猜你喜欢

转载自blog.csdn.net/qq_33552551/article/details/104637854