問題描述
平台:STM32F103RBT6,其中有GPIO 輸入,也有GPIO輸出,其中LED訓示燈(GPIO 輸出)。
發現,程式燒寫後,代碼正常跑,配置的GPIO 引腳,沒有電平輸出。
問題分析
- 開始以為代碼有問題,是以,軟體調試,發現可以正常的跑。
- 序列槽列印,發現程式能正常的執行!!
- 确認引腳配置正确後,開始認真的分析,發現,GPIO 的寄存器配置,感覺已經配置了推挽輸出!!
- 檢查硬體,發現焊接良好。
- 對比官方的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);
反思
- 其實都是懶引起的,代碼,不能總是複制與粘貼。
- 認真分析問題,認真總結。