czwartek, 13 marca 2014

Jak zapalić diode stm32F4 Coocox COIDE

   Programy testuje na płytce STM3241G-EVAL, diody mam na pinach: PG6, PG8, PC7, PI9, korzystać będę z pierwszych dwóch.
    1. Tworze nowy projek dla STM32F417IG (opisałem w poprzednim artykule)
    2. Dodaje bibliotekę GPIO z repozytoriów(reszta niezbędnych bibliotek doda się sama).
    3. Do pliku main.c wklejamy:

#include "stm32f4xx_gpio.h"    //standardowa biblioteka wejsc/wyjsc
#include "stm32f4xx_rcc.h"      //Reset and Clock Control

GPIO_InitTypeDef  GPIO_InitStructure;   //inicjalizacja
void Delay(__IO uint32_t nCount);           //definicja funkcji opóźnienia programowego(nie sprzętowego)

int main(void)
{
    SystemInit();                                           //inicjalizacja

/* Włączenie zegara dla konkretnego portu, domyślnie jest wyłączony dla zaoszczędzenia energii */
     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
          /*tu wpisujemu jaki port chcemy zainicjalizowac, w moim przypadku G*/

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8;
         /* tutaj wpisujemy jakie piny na danym porcie chcemy włączyć jak wyżej pisałem u mnie to pin 6 i 8 */

     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
         /*wybierasz między IN(wejście) OUT(wyjście), AF(funkcja alternatywna/alternate function) oraz                   AN(tryb analogowy/analog mode)*/
     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
         /*wybór między Push Pull(PP) a Open Dren(OD)*/
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
         /* 2, 25, 50, 100 MHz takie częstotliwości mamy do wyboru przy standardowej bibliotece, zmiany można nanieść w funkcjach zegara i do uzyskania jest chyba każda częstotliwość z zakresu 2-100 MHz */
     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
/*
w tej części wybieramy czy będzie podciągnięcie do mazy, zasilania, czy też bez podciągnięcia, szarzej opisałem to w poprzednim artykule
*/
     GPIO_Init(GPIOG, &GPIO_InitStructure);

    while(1)  // pętla nieskończona
    {
       GPIO_SetBits(GPIOG, GPIO_Pin_6); // ustawienie pinu 6 w stan wysoki(logiczna jedynka)

       Delay(0x3FFFFF); // opóźnienie

       GPIO_SetBits(GPIOG, GPIO_Pin_8);  // ustawienie pinu 8 w stan wysoki

       Delay(0x3FFFFF);  //opóźnienie

       GPIO_ResetBits(GPIOG, GPIO_Pin_6|GPIO_Pin_8); //skasowanie bitu, czyli ustawienie w stan niski

       Delay(0xFFFFFF);  // opóźnienie
     }
}

void Delay(__IO uint32_t nCount) //funkcja opóźnienia
{
  while(nCount--)
  {
  }
}



Brak komentarzy:

Prześlij komentarz