天天看点

直击翻车现场:STM32 GPIO 无法输出的问题

问题描述

平台:STM32F103RBT6,其中有GPIO 输入,也有GPIO输出,其中LED指示灯(GPIO 输出)。

发现,程序烧写后,代码正常跑,配置的GPIO 引脚,没有电平输出。

问题分析

  1. 开始以为代码有问题,所以,软件调试,发现可以正常的跑。
  2. 串口打印,发现程序能正常的执行!!
  3. 确认引脚配置正确后,开始认真的分析,发现,GPIO 的寄存器配置,感觉已经配置了推挽输出!!
  4. 检查硬件,发现焊接良好。
  5. 对比官方的GPIO配置,发现了一点问题。GPIO 的速率,没有配置!!

问题解决

原来配置GPIO时,上面有GPIO 输入,没有配置SPEED,配置输出时,直接复制粘贴后,改为了PP推挽输出,没有配置SPEED。

/* LED_PIN_RUN2 */
    HAL_GPIO_WritePin(PORT_LED_PIN_RUN2, LED_PIN_RUN2, GPIO_PIN_RESET);
    GPIO_InitStruct.Pin = LED_PIN_RUN2;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  /* 注意,需要配置!! */
    HAL_GPIO_Init(PORT_LED_PIN_RUN2, &GPIO_InitStruct);
           

反思

  1. 其实都是懒引起的,代码,不能总是复制与粘贴。
  2. 认真分析问题,认真总结。

继续阅读