Blink.ob07 1.1 KB

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