STM32 #0 – czyli pierwsze starcie z STM32F429 i blink LED

Właśnie zaczynam przygodę z programowaniem STM32 – od razu rzucam się na głęboką wodę, wybierając zestawy Nucleo-144 (oparte o STM32F429ZIT6 płytki NUCLEO-F429ZI oraz STM32F429I-DISC1). Postaram się (wraz z postępami w nauce) wrzucać kolejne działające przykłady. Póki pod wskazane płytki nie pojawi się wsparcie na mbed, to przykłady będą uruchamiane na System Workbench for STM32.

Pierwszy program jest led-migaczem, czyli nic niezwykłego. Mimo wszystko napisanie go zajęło mi blisko 3 godziny, a to głównie przez to, że potrzebowałem zrozumieć ideę działania, prześledzić kilka manuali oraz wyłapać różnice w nazewnictwie poszczególnych elementów w bibliotece dedykowanej dla w/w układu. Polecam na wstępie źródła z kursem: forbot.pl (oparte o płytkę z układem STM32F103), armprogramming.com (przykłady oparte o STM32F4) oraz kopalnię wiedzy stm32f4-discovery.com.

Uwagi: delay to zwykła pętla; zamiast Pin_0 można użyć Pin_7 lub Pin_14 na plytce Nucleo.

#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"

GPIO_InitTypeDef GPIO_InitStructure;

void GPIO_Initialize(void);
void delay(int);

int main(void)
{
GPIO_Initialize();
while (1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay(1000000);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay(1000000);
}
}

void GPIO_Initialize(void){
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); // wlaczenie taktowania portu B
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // zainicjowanie pinu 0 w porcie B
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // ustawienie pinu na wyjście
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // ustawienie typu push/pull
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; // ustawienie taktowania magistrali
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // odlaczenie 'podciagania' pinu
GPIO_Init(GPIOB, &GPIO_InitStructure);
}

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

(zestawy zakupiłem na Kamami.pl, gdzie są dostępne w dość przystępnych cenach – około 150zł każdy)

Podobał Ci się wpis? - skomentuj lub zalajkuj. Podziel się ze swoimi znajomymi. Każdy aktywny głos to dodatkowa motywacja do pisania bloga! Dzięki.