f18755 发表于 2017-1-12 16:50:59

发现一个STM32 HAL库的一个BUG。

玩儿了有一段时间的HAL库,今天试验I2S3发现其他的 LRCLK ,MCLK, SD,都有信号输出,但唯独BCLK没有输出,后面查找PDF文档和HAL库对比。不知道是官方软件没有挨个做实际验证还是我操作有误?
pin配置:



这是HAL库I2S初始化配置程序
void HAL_I2S_MspInit(I2S_HandleTypeDef* i2sHandle)
{

GPIO_InitTypeDef GPIO_InitStruct;
if(i2sHandle->Instance==SPI3)
{
/* USER CODE BEGIN SPI3_MspInit 0 */

/* USER CODE END SPI3_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_SPI3_CLK_ENABLE();

    /**I2S3 GPIO Configuration   
    PA4   ------> I2S3_WS
    PB10   ------> I2S3_MCK
    PB12   ------> I2S3_CK
    PC11   ------> I2S3_ext_SD
    PC12   ------> I2S3_SD
    */
    GPIO_InitStruct.Pin = GPIO_PIN_4;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_12;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = <b><font color="#ff0000">GPIO_AF5_SPI3;</font></b>
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_11;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF5_I2S3ext;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_12;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

/* USER CODE BEGIN SPI3_MspInit 1 */

/* USER CODE END SPI3_MspInit 1 */
}
}对照文档:



将上面初始化程序红色部分更改为AF7后,输出正常。BUG解决。

wofei1314 发表于 2017-1-13 14:11:02

楼主用的是HAL的那个版本?
暂时还没用到,不过好在有解决办法,谢谢分享~

ts2000 发表于 2017-1-13 14:12:44

HAL库感觉还是不成熟,,,暂时还不用

五哥1 发表于 2017-1-23 00:58:06

这个发现真的了不起
页: [1]
查看完整版本: 发现一个STM32 HAL库的一个BUG。