Это старая версия документа!
Управление микроконтроллером осуществляет через операции записи и чтения значений регистров.
Для записи значения примеряется процедура SYSTEM.PUT.
Первый аргумент — адрес регистра, второй — машинное слово.
Машинное слово может быть переменной или константой типа целое (INTEGER) или множество (SET).
Тип SET позволяет записать машинной слово в формате множества бит, равных 1.
Пример, где 1-ый, 2-й и 30-й бит 32-битного машинного слова равны 1:
{0,2,30} = 0100 0000 0000 0000 0000 0000 0000 0101
Адреса регистров хранятся в модулях подсистемы Micro.
MODULE ExamplesPut;
IMPORT SYSTEM, MCU := MicroSTM32F10xxD;
PROCEDURE On13;
BEGIN
SYSTEM.PUT(MCU.GPIOCBSRR, {13}); (* поднять напряжение на PС13 *)
END On13;
PROCEDURE Off13;
BEGIN
SYSTEM.PUT(MCU.GPIOCBSRR, {13+16}); (* убрать напряжение на PС13 *)
END Off13;
PROCEDURE On (x: INTEGER);
BEGIN
SYSTEM.PUT(MCU.GPIOCBSRR, {x}); (* поднять напряжение на PСx *)
END On;
PROCEDURE Off (x: INTEGER);
BEGIN
SYSTEM.PUT(MCU.GPIOCBSRR, {x+16}); (* убрать напряжение на PСx *)
END Off;
END ExamplesPut.
В процедуре On13 мы записываем константу {13} типа SET, которая означает то, что бит с номером 13 равен 1, а остальные биты машинного слова при этом равны 0.
В процедуре Off13 мы записываем константу {13+16} типа SET, которая означает то, что бит с номером 29 равен 1. Такая операция над регистром GPIOCBSRR приводит к выключению напряжения на выводе PC13.
В этом фрагменте из документации к микроконтроллеру показано, что первые 16 бит регистра GPIOx_BSRR управляют подачей напряжения на вывод, а оставшиеся 16 бит (от 16 до 31) выключают напряжение на выводах порта.