Инструменты пользователя

Инструменты сайта


ob:o7:example:put

Запись значения в регистр

Управление микроконтроллером осуществляет через операции записи и чтения значений регистров.

Для записи значения примеряется процедура SYSTEM.PUT(adr, val).

Первый аргумент процедуры — адрес регистра, второй — значение равное машинному слову.

Машинное слово может быть переменной или константой типа целое (INTEGER) или множество (SET).

Тип SET позволяет записать машинное слово в формате множества бит.

Пример константы типа SET, где 1-ый, 2-й и 30-й бит 32-битного машинного слова равны 1:

{0,2,30}

что соответствует машинному слову, записанному в двоичном виде (младший бит в конце):

0100 0000 0000 0000 0000 0000 0000 0101

Рассмотрим запись на примере регистра GPIOx_BSRR. В этом фрагменте из документации к микроконтроллеру показано, что первые 16 бит регистра GPIOx_BSRR управляют подачей напряжения на вывод, а оставшиеся 16 бит (от 16 до 31) выключают напряжение на выводах порта.

Адреса регистров хранятся в модулях подсистемы Micro.

Для микроконтроллеров STM32F10xxD адреса хранятся в модуле MicroSTM32F10xxD.

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;

    еще бы добавить пример кода когда в цикле биты set / unset
  

END ExamplesPut.

В процедуре On13 мы записываем константу {13} типа SET, которая означает то, что бит с номером 13 равен 1, а остальные биты машинного слова при этом равны 0.

В процедуре Off13 мы записываем константу {13+16} типа SET, которая означает то, что бит с номером 29 равен 1. Такая операция над регистром GPIOCBSRR приводит к выключению напряжения на выводе PC13.

ob/o7/example/put.txt · Последнее изменение: 2021/12/01 04:34 — amalgama