forked from KolibriOS/kolibrios
2f54c7de00
git-svn-id: svn://kolibrios.org@8097 a494cfbc-eb01-0410-851d-a64ba20cac60
79 lines
1.8 KiB
Plaintext
79 lines
1.8 KiB
Plaintext
(*
|
|
Пример для STM32L152C-DISCO
|
|
|
|
Светодиоды мигают по прерыванию от системного таймера.
|
|
*)
|
|
|
|
MODULE SysTick;
|
|
|
|
IMPORT SYSTEM;
|
|
|
|
|
|
CONST
|
|
|
|
GPIOB = 40020400H;
|
|
GPIOBMODER = GPIOB;
|
|
GPIOBOTYPER = GPIOB + 04H;
|
|
GPIOBOSPEEDR = GPIOB + 08H;
|
|
GPIOBPUPDR = GPIOB + 0CH;
|
|
GPIOBIDR = GPIOB + 10H;
|
|
GPIOBODR = GPIOB + 14H;
|
|
GPIOBBSRR = GPIOB + 18H;
|
|
GPIOBLCKR = GPIOB + 1CH;
|
|
GPIOBAFRL = GPIOB + 20H;
|
|
GPIOBAFRH = GPIOB + 24H;
|
|
GPIOBBRR = GPIOB + 28H;
|
|
|
|
|
|
RCC = 40023800H;
|
|
RCC_CR = RCC;
|
|
RCC_AHBENR = RCC + 1CH;
|
|
RCC_APB2ENR = RCC + 20H;
|
|
RCC_APB1ENR = RCC + 24H;
|
|
|
|
|
|
STK = 0E000E010H;
|
|
STK_CTRL = STK;
|
|
ENABLE = {0};
|
|
TICKINT = {1};
|
|
CLKSOURCE = {2};
|
|
|
|
STK_LOAD = STK + 04H;
|
|
STK_VAL = STK + 08H;
|
|
STK_CALIB = STK + 0CH;
|
|
|
|
|
|
Blue = 6;
|
|
Green = 7;
|
|
|
|
|
|
VAR
|
|
|
|
x: SET; state: BOOLEAN;
|
|
|
|
|
|
(* обработчик прерываний от System tick timer *)
|
|
PROCEDURE tick [15];
|
|
BEGIN
|
|
state := ~state;
|
|
(* включить или выключить светодиоды *)
|
|
SYSTEM.PUT(GPIOBBSRR, {Blue + 16 * ORD(state)});
|
|
SYSTEM.PUT(GPIOBBSRR, {Green + 16 * ORD(state)})
|
|
END tick;
|
|
|
|
|
|
BEGIN
|
|
state := FALSE;
|
|
|
|
(* подключить GPIOB *)
|
|
SYSTEM.GET(RCC_AHBENR, x);
|
|
SYSTEM.PUT(RCC_AHBENR, x + {1});
|
|
|
|
(* настроить PB6 и PB7 на выход *)
|
|
SYSTEM.GET(GPIOBMODER, x);
|
|
SYSTEM.PUT(GPIOBMODER, x + {12, 14} - {13, 15});
|
|
|
|
(* настроить и запустить SysTick *)
|
|
SYSTEM.PUT(STK_LOAD, 1048576);
|
|
SYSTEM.PUT(STK_CTRL, ENABLE + TICKINT + CLKSOURCE);
|
|
END SysTick. |