Skocz do zawartości

[C] STM32 L152RE problem z... migającą diodą


Qwerty123

Pomocna odpowiedź

Mam problem który z pozoru może się wydawać banalny i tak pewnie jest ale kompletnie nie wiem czemu dioda nie chce mi migać. Niżej wklejam kod:

#include "stm32l1xx.h" 
#include "stm32l1xx_nucleo.h" 

void delay(int time) 
{ 
   int i; 
   for (i = 0; i < time * 4000; i++) {} 
} 

int main(void) 
{ 
   GPIO_InitTypeDef gpio; 

   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); 

   GPIO_StructInit(&gpio); 
        gpio.GPIO_Pin = GPIO_Pin_5; 
        gpio.GPIO_Mode =  GPIO_Mode_OUT; 
        gpio.GPIO_OType =  GPIO_OType_PP; 
        GPIO_Init(GPIOA, &gpio); 

        while (1) { 
                    GPIO_SetBits(GPIOA, GPIO_Pin_5); 
                    delay(50); 
                    GPIO_ResetBits(GPIOA, GPIO_Pin_5); 
                    delay(100); 
                } 
        } 
Link do komentarza
Share on other sites

Qwerty123, a co to znaczy, że nie miga? Świeci? Nie świeci? Świeci słabo?

Ta funkcja delay jest trochę podejrzana, bo dla szybkiego STM'a zrobienie tych pętli for może zająć niezauważalny dla ludzkiego oka czas 😉

Link do komentarza
Share on other sites

Warto jeszcze dodać volatile w pętli opóźniającej, czyli:

void delay(int time) 
{ 
   volatile int i; 
   for (i = 0; i < time * 4000; i++) {} 
} 

Inaczej kompilator może wyrzucić całą pętlę.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.