STM32CubeMX项目SPI2 CLK信号丢失问题

本文解决了一个STM32CubeMX项目中SPI2时钟信号丢失的问题。问题出现在配置PB13作为SPI2_SCK时钟引脚时选择了错误的复用功能。正确的配置应将复用功能设置为GPIO_AF0_SPI2。

  前两天发现STM32CubeMX项目SPI2 CLK信号丢失问题
 

1、使用引脚
    PB2     ------> SPI2_MISO
    PB11     ------> SPI2_MOSI
    PB12     ------> SPI2_NSS
    PB13     ------> SPI2_SCK

2、生成GPIO的代码如下:
 

    /* USER CODE BEGIN SPI2_MspInit 0 */

    /* USER CODE END SPI2_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_SPI2_CLK_ENABLE();

    __HAL_RCC_GPIOB_CLK_ENABLE();
    /**SPI2 GPIO Configuration
    PB2     ------> SPI2_MISO
    PB11     ------> SPI2_MOSI
    PB12     ------> SPI2_NSS
    PB13     ------> SPI2_SCK
    */
    GPIO_InitStruct.Pin = GPIO_PIN_13;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF1_SPI2;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_2|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_AF0_SPI2;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_12;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF0_SPI2;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

   /* USER CODE BEGIN SPI2_MspInit 1 */

   /* USER CODE END SPI2_MspInit 1 */

2、错误原因

经检查,在配置PB13     ------> SPI2_SCK时钟引脚的时候,复用功能使用错了。

PB13 并没有GPIO_AF1_SPI2这种复用功能,应该将其改为 GPIO_InitStruct.Alternate = GPIO_AF0_SPI2;

手册中的复用功能:

3、使用STM32CubeMX版本如下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值