Не может мигать светодиод PA5 на плате Nucleo - PullRequest
0 голосов
/ 29 января 2020

Не могли бы вы помочь мне определить, где я совершил ошибку? Индикатор на порту PA5.

int main(void){
    HAL_Init();
    SystemClock_Config();
    GPIO_InitTypeDef GPIO_InitStruct;
    __HAL_RCC_GPIOA_CLK_ENABLE();

    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    while(1){
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
        HAL_Delay(5000);
    }
}

1 Ответ

0 голосов
/ 02 февраля 2020

На микроконтроллерах контакты имеют несколько функций, функции которых должны быть настроены программно, а иногда и аппаратно (подтягивание контактов к V CC или GND, ...). PA5 STM32L073xZ имеет альтернативные функции, это в техническом описании (https://www.mouser.de/datasheet/2/389/stm32l073v8-956245.pdf) на стр. 39 и 45, пакет MCU на Nucleo L073RZ - LQFP64, cf schemati c of Ядро в https://www.st.com/content/ccc/resource/technical/document/user_manual/98/2e/fa/4b/e0/82/43/b7/DM00105823.pdf/files/DM00105823.pdf/jcr: контент / переводы / en.DM00105823.pdf на стр. 64 (https://www.st.com/content/ccc/resource/technical/document/reference_manual/2f/b9/c6/34/28/29/42/d2/DM00095744.pdf/files/DM00095744.pdf/jcr: контент / переводы / en.DM00095744.pdf ).

Я не знаю, включили ли вы альтернативные функции где-то в остальной части вашего кода, однако, возможно, это является ядром проблемы. Часть кода, который вы разместили, является точной, в https://github.com/TechBreiteneder/00_GPIO_BlinkLED/blob/master/Src/main.c - код мигающего светодиода в проекте CubeMX. Поэтому, возможно, вы включили альтернативную функцию на выводе PA5, кроме того, вам нужно включить другие компоненты, такие как система синхронизации, чтобы MCU работал вообще, см. https://riptutorial.com/stm32/example/25059/first-time-setup-with-blink-led-example-using-sw4stm32-and-hal-library. Поэтому, не зная вашей конфигурации MCU, трудно сказать, где ошибка ...

Что вам нужно сделать, это установить определенное начальное состояние перед переключением чего-либо, однако я думаю, что это не проблема

/*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN5, GPIO_PIN_RESET);
...