diff --git a/SamplesSTM32.cmd b/SamplesSTM32.cmd new file mode 100644 index 0000000..a10ff29 --- /dev/null +++ b/SamplesSTM32.cmd @@ -0,0 +1,2 @@ +for %%f in (samples\STM32\*.ob07) do Compiler.exe %%f stm32 +@pause diff --git a/samples/STM32/Blink.ob07 b/samples/STM32/Blink.ob07 new file mode 100644 index 0000000..ce7f90b --- /dev/null +++ b/samples/STM32/Blink.ob07 @@ -0,0 +1,59 @@ +(* + + Пример для STM32L152C-DISCO + + В зависимости от значения константы LED, + мигает синий или зеленый светодиод. + +*) + +MODULE Blink; + +IMPORT SYSTEM; + + +CONST + + GPIOB = 40020400H; + GPIOB_MODER = GPIOB; + GPIOB_BSRR = GPIOB + 18H; + + RCC = 40023800H; + RCC_AHBENR = RCC + 1CH; + + Blue = 6; (* PB6 *) + Green = 7; (* PB7 *) + + LED = Blue; + +VAR + + x: SET; + state: BOOLEAN; + + +PROCEDURE Delay (x: INTEGER); +BEGIN + REPEAT + DEC(x) + UNTIL x = 0 +END Delay; + + +BEGIN + (* подключить GPIOB *) + SYSTEM.GET(RCC_AHBENR, x); + SYSTEM.PUT(RCC_AHBENR, x + {1}); + + (* настроить PB6 или PB7 на выход *) + SYSTEM.GET(GPIOB_MODER, x); + SYSTEM.PUT(GPIOB_MODER, x - {LED * 2 - 1} + {LED * 2}); + + state := FALSE; + REPEAT + (* включить или выключить светодиод *) + SYSTEM.PUT(GPIOB_BSRR, {LED + 16 * ORD(state)}); + state := ~state; + Delay(200000) + UNTIL FALSE +END Blink. \ No newline at end of file