STM32F466RE Hello World su LED! 2022.01.28 at 15:22

Toks pirmas programavimo greitukas, tik tam, kad pabandyti su kuo tas STMas valgomas, tiksliau kaip jį valgyti. Viskas daug maž intuityviai pasidaro, vos ne vedlio (wizard) principu, todėl per daug į smulkmenas nesileisiu. O be to pilna tiek video (YouTube), tiek aprašymų (šiaip Internete), kaip pradėti ir parašyti kokią nors paprastą programėlę. Nors ir trumpai, bet pažingsniui.

  1. Instaliuojam STM32CubeIDE, teksto rašymo metu versija 1.8.0.
  2. Prijungiam kūrybinį modulį, paleidžiam IDE.
  3. Susirandam modulį IDE aplinkoje (beje, ten galima iš karto parsitempti PDF aprašymus), nieko labai nekonfigūruojam, nes viską sumes pagal nutylėjimą pagal modulį. Važiuojam per vedlį kol pamatom procesoriaus paveiksliuką.
  4. Kad nebūčiau toks visai nulinukas, pridėjau papildomą LEDą ant PA6 prievado.

Pavadinau jį LED1 [Yellow LED], nes geltonas, ir šalia „gamyklinis” LED, toks kaip Arduine ant 13 prievado kaba, taigi jį pavadinau LED2 [Green Led] nes žalias. Abo prievadai nustatyti kaip GPIO_Output (spragtelk ant pino). Ir kol kas užteks, spaudžiam F11 arba Run > Debug arba plaktuką meniu juostoje, ir iš to kas sureguliuota pagamins main.c failiuką (bus tarpinis vedliukas, bet ten lyg nieko nekeičiau).

  1. Turim jau sugeneruot visą naudžiąją kodo dalį su konfigūravimu. Toliau Main programoje tik pasidarom kintamąjį, kuris laikys prievado būklės reikšmę (1 arba 0):
    /* USER CODE BEGIN 2 */
    static unsigned short pin_state = 0; // Inicializuojamas kintamasis
    /* USER CODE END 2 */
    Pastaba – būtina savo kodą rašyti tarp USER CODE BEGIN ir atitinkamai END. Šitas atitinka Arduino void setup() { }
  2. Važiuojam į while (1) ciklą, kuris suks mūsų kodą be sustojimo. Atitinka Arduino void loop() { } ir sakom ko mes norim iš procesoriaus.
    /* USER CODE BEGIN WHILE */
    while (1)
    {
    HAL_GPIO_WritePin(GPIOA, LED1_Pin, pin_state); // Geltonas LED
    HAL_GPIO_WritePin(GPIOA, LED2_Pin, !pin_state); // Zalias LED
    pin_state = !pin_state;
    HAL_Delay(1000);
    /* USER CODE END WHILE */
    Vėl viskas rašoma tarp tų BEGIN ir END. HAL – Hardware Abstraction Layer. Panašiai kaip bibliotekos Arduine, viena komanda padaro visą darbą. Prie modulio aprašymo įdėjau HAL aprašymą, ten ~2000 puslapių :D.
  3. Spaudžiam žalia mygtuką su trikampiuku ir laukiam kol sukompiliuos ir užprogramuos procesorių. Viskas :).

Leave a Reply

*