你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

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

2017-01-12_164148.jpg

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

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

  7.   /* USER CODE END SPI3_MspInit 0 */
  8.     /* Peripheral clock enable */
  9.     __HAL_RCC_SPI3_CLK_ENABLE();
  10.   
  11.     /**I2S3 GPIO Configuration   
  12.     PA4     ------> I2S3_WS
  13.     PB10     ------> I2S3_MCK
  14.     PB12     ------> I2S3_CK
  15.     PC11     ------> I2S3_ext_SD
  16.     PC12     ------> I2S3_SD
  17.     */
  18.     GPIO_InitStruct.Pin = GPIO_PIN_4;
  19.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  20.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  21.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  22.     GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
  23.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  24.     GPIO_InitStruct.Pin = GPIO_PIN_10;
  25.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  26.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  27.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  28.     GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
  29.     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

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

  36.     GPIO_InitStruct.Pin = GPIO_PIN_11;
  37.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  38.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  39.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  40.     GPIO_InitStruct.Alternate = GPIO_AF5_I2S3ext;
  41.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  42.     GPIO_InitStruct.Pin = GPIO_PIN_12;
  43.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  44.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  45.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  46.     GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
  47.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  48.   /* USER CODE BEGIN SPI3_MspInit 1 */

  49.   /* USER CODE END SPI3_MspInit 1 */
  50.   }
  51. }
复制代码
对照文档:

2017-01-12_164835.jpg

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

收藏 2 评论3 发布时间:2017-1-12 16:50

举报

3个回答
wofei1314 回答时间:2017-1-13 14:11:02
楼主用的是HAL的那个版本?
暂时还没用到,不过好在有解决办法,谢谢分享~
ts2000 回答时间:2017-1-13 14:12:44
HAL库感觉还是不成熟,,,暂时还不用
五哥1 回答时间:2017-1-23 00:58:06
这个发现真的了不起
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版