CooCox CoIDE i STM32F4Discovery – jak zacząć?
Do obsługi diody LED wystarczy wybrać tylko jeden komponent standardowej biblioteki obsługi peryferii – komponent GPIO, a zaraz potem pojawi się okienko dialogowe z pytaniem czy utworzyć nowy projekt, gdyż w zakładce Project okna głównego brak jest jakiegokolwiek projektu i należy tutaj wybrać „Tak” (rysunek 7). W kolejnym okienku (rysunek 8) wystarczy podać nazwę projektu oraz ewentualną inną lokalizację (wtedy należy odznaczyć pole Use default location i podać katalog roboczy projektu) i kliknąć Finish. Można teraz zauważyć, że program automatycznie wybrał wszystkie te komponenty z których korzysta element GPIO (występują tutaj powiązania) oraz przygotował gotową strukturę projektu w zakładce Project okna głównego (rysunek 9).
Rys. 6. Lista dostępnych komponentów
Rys. 7. Pytanie o utworzenie nowego projektu
Rys. 8. Podanie nazwy i lokalizacji tworzonego projektu
Rys. 9. Przykładowa struktura projektu
Rys. 10. Komponenty obsługi zewnętrznych urządzeń
W tym samym kroku oprócz komponentów związanych z obsługą wewnętrznych modułów peryferyjnych mikrokontrolera można również wybierać komponenty obsługi zewnętrznych urządzeń, takie jak pliki obsługi wyświetlacza LCD i czujnika temperatury – patrz zakładki Drivers i Others w dolnej części okna Repository (rysunek 10). Warto dodać, że takie komponenty mogą być dodawane przez zwykłych użytkowników do głównej bazy projektu nawet z poziomu samego oprogramowania. Ponieważ zestaw STM32F4Discovery posiada zewnętrzny oscylator 8MHz za pomocą którego jest taktowany układ to wymagana jest drobna modyfikacja pliku system_stm32f4xx.c, w którym częstotliwość sygnału systemowego jest ustawiona na 168 MHz. Należy znaleźć linijkę:
#define PLL_M 25
i zamienić wartość 25 na 8:
#define PLL_M 8
Plik main.c z pętlą while() został również dodany automatycznie, więc aby przetestować kompilację prostego projektu dodajemy poniższy kod realizujący migotanie dwóch diod LED podłączonych do wyprowadzeń PD12 oraz PD14 i z menu głównego wybieramy: Project -> Build (albo klawisz F7). Jeżeli wszystko zostało wykonane bez błędów to efekt powinien być podobny do przedstawionego na rysunku 11.
#include
#include
void Delay(void)
{
volatile uint32_t i;
for (i = 0; i != 0xFFFFF; i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// Wlaczenie sygnalu taktujacego port D
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD , ENABLE);
GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_12 | GPIO_Pin_14);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
// Wyzerowanie wyjscia PD14
GPIO_ResetBits(GPIOD, GPIO_Pin_14);
// Ustawienie wyjscia PD12
GPIO_SetBits(GPIOD, GPIO_Pin_12);
while(1){
// Zmiana stanu wyjsc na przeciwny
GPIO_ToggleBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_14);
// Czekaj
Delay();
}
}






Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć
Fotorezystor, czyli czujnik światła dwojakiego działania. Przykład innowacji w automatyce i elektronice możliwej dzięki technologii fotooporników 



