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

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


ob:o7:example:get

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ob:o7:example:get [2021/12/01 04:32]
amalgama
ob:o7:example:get [2022/03/11 14:09] (текущий)
iadenisov
Строка 9: Строка 9:
 Машинное слово может быть переменной или константой типа целое (''INTEGER'') или множество (''SET''). Машинное слово может быть переменной или константой типа целое (''INTEGER'') или множество (''SET'').
  
-(ПРИМЕР ДЛЯ STM32 - ) +Рассмотрим сначала чтение на примере регистра ''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''. +Адреса регистров хранятся в модулях подсистемы ''Micro''Напримр для микроконтроллеров семейства **STM32F10xxD** адреса хранятся в модуле ''MicroSTM32F10xxD''. Для настройки выводов контроллеров STM32F10* используется модуль ''MicroSTM32F10xPinCfg''.
- +
-Для микроконтроллеров **STM32F10xxD** адреса хранятся в модуле ''MicroSTM32F10xxD''.+
  
  
Строка 23: Строка 19:
 MODULE ExamplesGet; MODULE ExamplesGet;
  
- IMPORT SYSTEM, MCU := MicroSTM32F10xxD;+ IMPORT SYSTEM, MCU := MicroSTM32F10xxD, PinCfg := MicroSTM32F10xPinCfg;
  
- PROCEDURE CheckButton* (pin: INTEGER): BOOLEAN;+ CONST pin = 7;  
 + 
 + PROCEDURE InitButton*; 
 + BEGIN 
 + PinCfg.Configure(PinCfg.C, 13, PinCfg.inputPullDown); 
 + END InitButton; 
 + 
 + 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;
- 
  
 END ExamplesGet. END ExamplesGet.
 </code> </code>
  
-Этот пример реализует процедуру, которая проверяет уровень сигнала на ножке ''pin''.+Этот пример реализует процедуру, которая проверяет уровень сигнала на ножке ''pin''. Кнопка должна быть подключена к питанию через резистор номиналом от 100 Ом, чтобы обеспечить ток менее 50 мА.
  
 Подробнее про [[https://oberoncore.ru/library/wirth_sets|применение типа SET для управления регистрами]]. Подробнее про [[https://oberoncore.ru/library/wirth_sets|применение типа SET для управления регистрами]].
 +
 +
 +Второй пример реализует чтение данных в целое число из регистра чтения данных АЦП:
 +<code>
 +VAR value: INTEGER;
 +BEGIN
 + SYSTEM.GET(MCU.ADC1DR, value);
 +</code>
 +
ob/o7/example/get.1638322341.txt.gz · Последнее изменение: 2021/12/01 04:32 — amalgama