Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. (*
  2.   Пример для STM32L152C-DISCO
  3.  
  4.   В зависимости от значения константы LED,
  5.   мигает синий или зеленый светодиод.
  6. *)
  7.  
  8. MODULE Blink;
  9.  
  10. IMPORT SYSTEM;
  11.  
  12.  
  13. CONST
  14.  
  15.     GPIOB = 40020400H;
  16.         GPIOB_MODER = GPIOB;
  17.         GPIOB_BSRR  = GPIOB + 18H;
  18.  
  19.     RCC = 40023800H;
  20.         RCC_AHBENR  = RCC + 1CH;
  21.  
  22.     Blue  = 6;  (* PB6 *)
  23.     Green = 7;  (* PB7 *)
  24.  
  25.     LED = Blue;
  26.  
  27. VAR
  28.  
  29.     x: SET;
  30.     state: BOOLEAN;
  31.  
  32.  
  33. PROCEDURE Delay (x: INTEGER);
  34. BEGIN
  35.     REPEAT
  36.         DEC(x)
  37.     UNTIL x = 0
  38. END Delay;
  39.  
  40.  
  41. BEGIN
  42.     (* подключить GPIOB *)
  43.     SYSTEM.GET(RCC_AHBENR, x);
  44.     SYSTEM.PUT(RCC_AHBENR, x + {1});
  45.  
  46.     (* настроить PB6 или PB7 на выход *)
  47.     SYSTEM.GET(GPIOB_MODER, x);
  48.     SYSTEM.PUT(GPIOB_MODER, x - {LED * 2 - 1} + {LED * 2});
  49.  
  50.     state := FALSE;
  51.     REPEAT
  52.         (* включить или выключить светодиод *)
  53.         SYSTEM.PUT(GPIOB_BSRR, {LED + 16 * ORD(state)});
  54.         state := ~state;
  55.         Delay(200000)
  56.     UNTIL FALSE
  57. END Blink.