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

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


ob:o7:example:get

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ob:o7:example:get [2022/03/11 14:08]
iadenisov
ob:o7:example:get [2026/04/03 08:10] (текущий)
iadenisov
Строка 9: Строка 9:
 Машинное слово может быть переменной или константой типа целое (''INTEGER'') или множество (''SET''). Машинное слово может быть переменной или константой типа целое (''INTEGER'') или множество (''SET'').
  
-Рассмотрим сначала чтение на примере регистра ''GPIOx_IDR''. В следующем фрагменте из [[https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf|документации к микроконтроллеру]] показано, что первые 16 бит регистра ''GPIOx_IDR'' содержат информацию о напряжении на выводах порта ''x''.+Рассмотрим сначала чтение на примере регистра ''GPIOx_IDR''. В приведенном ниже фрагменте из [[https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf|документации к микроконтроллеру]] показано, что первые 16 бит регистра ''GPIOx_IDR'' содержат информацию о напряжении на выводах порта ''x''.
  
 {{ :ob:o7:example:idr.png?800 }} {{ :ob:o7:example:idr.png?800 }}
  
-Адреса регистров хранятся в модулях подсистемы ''Micro''. Напримр для микроконтроллеров семейства **STM32F10xxD** адреса хранятся в модуле ''MicroSTM32F10xxD''. Для настройки выводов контроллеров STM32F10* используется модуль ''MicroSTM32F10xPinCfg''.+Адреса регистров хранятся в модулях подсистемы ''Micro''. Например для микроконтроллеров семейства **STM32F10xxD** адреса хранятся в модуле ''MicroSTM32F10xxD''. Для настройки выводов контроллеров STM32F10* используется модуль ''MicroSTM32F10xPinCfg''.
  
  
Строка 25: Строка 25:
  PROCEDURE InitButton*;  PROCEDURE InitButton*;
  BEGIN  BEGIN
- PinCfg.Configure(PinCfg.C, 13, PinCfg.inputPullDown);+ PinCfg.Configure(PinCfg.C, pin, PinCfg.inputPullDown);
  END InitButton;  END InitButton;
  
  PROCEDURE CheckButton*(): BOOLEAN;  PROCEDURE CheckButton*(): BOOLEAN;
- VAR x: SET;+ VAR x: SET;
  BEGIN  BEGIN
  SYSTEM.GET(MCU.GPIOAIDR, x);  SYSTEM.GET(MCU.GPIOAIDR, x);
- RETURN pin IN x       (из 32 битного  х  маской pin получаем булевое true/false ??)+ RETURN pin IN x (* проверяем, есть ли искомый пин в множестве бит регистра *)
  END CheckButton;  END CheckButton;
  
Строка 38: Строка 38:
 </code> </code>
  
-Этот пример реализует процедуру, которая проверяет уровень сигнала на ножке ''pin''. Кнопка должна быть подключена к питанию через резистор номиналом от 200 Ом, чтобы обеспечить ток менее 50 мА.+Этот пример реализует процедуру, которая проверяет уровень сигнала на ножке ''pin''. Кнопка должна быть подключена к питанию через резистор номиналом от 100 Ом, чтобы обеспечить ток менее 50 мА.
  
 Подробнее про [[https://oberoncore.ru/library/wirth_sets|применение типа SET для управления регистрами]]. Подробнее про [[https://oberoncore.ru/library/wirth_sets|применение типа SET для управления регистрами]].
Строка 49: Строка 49:
  SYSTEM.GET(MCU.ADC1DR, value);  SYSTEM.GET(MCU.ADC1DR, value);
 </code> </code>
 +
 +Однако, чтобы данные появились в этом регистре требуется специальная настройка АЦП, что выходит за рамки настоящей заметки (смотрите модули ''STM32F1ADC1'', ''STM32F4ADC1'').
 +
 +Следующая заметка: [[ob:o7:example:put|Запись значения в регистр (SYSTEM.PUT)]]
 +
  
ob/o7/example/get.1646996893.txt.gz · Последнее изменение: 2022/03/11 14:08 — iadenisov