|
|
(не показано 8 промежуточных версий этого же участника) |
Строка 15: |
Строка 15: |
| * [[MicroPython:Библиотеки/pyb/pyb.elapsed_millis()|pyb.elapsed_millis()]] | | * [[MicroPython:Библиотеки/pyb/pyb.elapsed_millis()|pyb.elapsed_millis()]] |
| * [[MicroPython:Библиотеки/pyb/pyb.elapsed_micros()|pyb.elapsed_micros()]] | | * [[MicroPython:Библиотеки/pyb/pyb.elapsed_micros()|pyb.elapsed_micros()]] |
|
| |
| * pyb.udelay(us) – делает задержку на заданное количество микросекунд.
| |
| * pyb.millis() – возвращает количество миллисекунд, прошедших с последнего сброса платы.
| |
| Возвращаемым значением всегда будет MicroPython’овское малое целое число (31-битное знаковое число), поэтому спустя 230 миллисекунд (это примерно 12.4 дня) эта функция начнет возвращать отрицательные числа.
| |
| При вызове pyb.stop() работа функции pyb.millis() встанет на паузу и будет находиться в таком состоянии, пока устройство не выйдет из режима сна. Это также повлияет на результат функции pyb.elapsed_millis().
| |
| * pyb.micros() – возвращает количество микросекунд, прошедших с последнего сброса платы.
| |
| Возвращаемым значением всегда будет MicroPython’овское малое целое число (31-битное знаковое число), поэтому спустя 230 микросекунд (это примерно 17.8 минут) эта функция начнет возвращать отрицательные числа.
| |
| При вызове pyb.stop() работа функции pyb.micros() встанет на паузу и будет находиться в таком состоянии, пока устройство не выйдет из режима сна. Это также повлияет на результат функции pyb.elapsed_micros().
| |
| * pyb.elapsed_millis(start) – возвращает количество миллисекунд, прошедших с запуска платы.
| |
| Эта функция умеет работать с остатком по модулю (то есть с ситуациями, когда значение переваливает за некоторый порог и идет дальше) и всегда возвращает положительное число. Это значит, что ее можно использовать для измерения периодов, длящихся до 12.4 дней.
| |
| Пример:
| |
|
| |
| <syntaxhighlight lang="python" enclose="div">
| |
| start = pyb.millis()
| |
| while pyb.elapsed_millis(start) < 1000:
| |
| # Далее выполняем какие-то операции
| |
| </syntaxhighlight>
| |
|
| |
| * pyb.elapsed_micros(start) – возвращает количество микросекунд, прошедших с запуска платы.
| |
| Эта функция умеет работать с остатком по модулю (то есть с ситуациями, когда значение переваливает за некоторый порог и идет дальше) и всегда возвращает положительное число. Это значит, что ее можно использовать для измерения периодов, длящихся до 17.8 минут.
| |
| Пример:
| |
|
| |
| <syntaxhighlight lang="python" enclose="div">
| |
| start = pyb.micros()
| |
| while pyb.elapsed_micros(start) < 1000:
| |
| # Далее выполняем какие-то операции.
| |
| pass
| |
| </syntaxhighlight>
| |
|
| |
|
| == Функции для работы со сбросом == | | == Функции для работы со сбросом == |
|
| |
|
| * pyb.hard_reset() – выполняет сброс платы Pyboard, как если бы это было нажатие на кнопку RESET на плате. | | * [[MicroPython:Библиотеки/pyb/pyb.hard_reset()|pyb.hard_reset()]] |
| * pyb.bootloader() – активирует загрузчик без использования контакта BOOT. | | * [[MicroPython:Библиотеки/pyb/pyb.bootloader()|pyb.bootloader()]] |
| * pyb.fault_debug(value) – включает/выключает отладку т.н. «тяжелых отказов». Тяжелый отказ – это ситуация, когда в используемой системе возникла фатальная ошибка вроде недопустимого обращения к памяти. | | * [[MicroPython:Библиотеки/pyb/pyb.fault_debug(value)|pyb.fault_debug(value)]] |
| Если в аргументе value будет задано False, при возникновении тяжелого отказа будет выполнен автоматический сброс платы.
| |
| Если в аргументе value будет задано True, то при возникновении тяжелого отказа система распечатает значения регистров и стек-трейс, а затем запустит бесконечное циклическое мигание светодиодами.
| |
| По умолчанию в этой функции задано False, т.е. автоматический сброс.
| |
|
| |
|
| == Функции для работы с прерываниями == | | == Функции для работы с прерываниями == |
|
| |
|
| * pyb.disable_irq() – отключает запросы на прерывания. Возвращает предыдущее состояние запросов на прерывание: False для отключенных прерываний и True – для включенных. Значение, возвращенное этой функцией, можно передать функции enable_irq(), чтобы восстановить исходное состояние прерываний. | | * [[MicroPython:Библиотеки/pyb/pyb.disable_irq()|pyb.disable_irq()]] |
| * pyb.enable_irq(state=True) – включает запросы на прерывания. Если задать в state значение True (это значение по умолчанию), это включит прерывания, а если False, это их выключит. Самый распространенный вариант применения этой функции – это передача возвращенного ею значения функции disable_irq(), чтобы выйти из критического раздела кода. | | * [[MicroPython:Библиотеки/pyb/pyb.enable_irq()|pyb.enable_irq()]] |
|
| |
|
| == Функции для работы с электропитанием == | | == Функции для работы с электропитанием == |
|
| |
|
| * pyb.freq([sysclk[, hclk[, pclk1[, pclk2]]]]) – если не задавать в этой функции никаких аргументов, она вернет кортеж с тактовыми частотами: (sysclk, hclk, pclk1, pclk2). Они означают следующее: | | * [[MicroPython:Библиотеки/pyb/pyb.freq()|pyb.freq()]] |
| ** sysclk – частота процессора.
| | * [[MicroPython:Библиотеки/pyb/pyb.wfi()|pyb.wfi()]] |
| ** hclk – частота шины AHB (оперативная память и DMA).
| | * [[MicroPython:Библиотеки/pyb/pyb.stop()|pyb.stop()]] |
| ** pclk1 – частота шины APB1.
| | * [[MicroPython:Библиотеки/pyb/pyb.standby()|pyb.standby()]] |
| ** pclk2 – частота шины APB2.
| |
| Если задать в этой функции аргументы, она задаст частоту процессора и шин. Частота задается в герцах. Например, freq(120000000) задаст частоту процессора (sysclk) на 120 МГц. Поддерживаются не все значения, и функцией будет выбрано наибольшее поддерживаемое значение, но не выше того, что было задано в аргументе.
| |
| Поддерживаемые частоты для sysclk (в МГц): 8, 16, 24, 30, 32, 36, 40, 42, 48, 54, 56, 60, 64, 72, 84, 96, 108, 120, 144, 168.
| |
| Максимальная частота для hclk – это 168 МГц, для pclk1 – 42 МГц, для pclk2 – 84 МГц. Ни в коем случае не задавайте частоты, превышающие эти значения.
| |
| Частоты для hclk, pclk1 и pclk2 – это производные от частоты sysclk (они генерируются при помощи предварительных делителей частоты). Поддерживаемые делители для hclk: 1, 2, 4, 8, 16, 64, 128, 256, 512. Поддерживаемые делители для pclk1 и pclk2: 1, 2, 4, 8. Выбор делителя будет осуществляться так, чтобы он наилучшим образом соответствовал запрошенной частоте.
| |
| Частота sysclk в 8 МГц напрямую использует HSE-генератор (внешний высокоскоростной генератор), а в 16 МГц – HSI-генератор (внутренний высокоскоростной генератор). Более высокие частоты используются HSE-генератором для управления PLL (фазовой автоподстройкой частоты), а затем используют результат PLL.
| |
| Если поменять частоту при включенном USB-соединении, оно может стать ненадежным. Частоту лучше менять в «boot.py» – еще до запуска USB-компонентов. Также помните, что при частоте процессора ниже 36 МГц USB-соединение будет работать некорректно.
| |
| * pyb.wfi() – ждет внутреннего или внешнего прерывания.
| |
| Эта функция выполняет команду wfi, которая снижает энергопотребление микроконтроллера до срабатывания прерывания (внутреннего или внешнего), после чего выполнение кода возобновляется. Помните, что прерывания системного таймера возникают каждую миллисекунду (1000 Гц), так что эта функция заблокирует выполнение кода максимум на 1 миллисекунду.
| |
| * pyb.stop() – переводит PyBoard в режим сна. | |
| Это снижает энергопотребление до уровня ниже 500 мкА (микроампер). Чтобы выйти из этого состояния, требуется либо RTC-событие, либо внешнее прерывание. При пробуждении выполнение кода возобновляется с того места, где оно было прекращено.
| |
| О настройке пробуждающего RTC-события читайте в описании функции rtc.wakeup().
| |
| * pyb.standby() – переводит PyBoard в режим «глубокого сна». | |
| Это снижает энергопотребление до уровня ниже 50 мкА (микроампер). Чтобы выйти из этого состояния, требуется либо RTC-событие, либо внешнее прерывание на X1 (PA0=WKUP) или X18 (PC13=TAMP1). При пробуждении система выполняет аппаратный сброс.
| |
| О настройке пробуждающего RTC-события читайте в описании функции rtc.wakeup().
| |
|
| |
|
| == Прочие функции == | | == Прочие функции == |
|
| |
|
| * pyb.have_cdc() – возвращает True, если к USB-порту подключено последовательное устройство. В противном случае возвращает False. | | * [[MicroPython:Библиотеки/pyb/pyb.have_cdc()|pyb.have_cdc()]] |
| Примечание: Эта функция устарела. Вместо нее используйте yb.USB_VCP().isconnected().
| | * [[MicroPython:Библиотеки/pyb/pyb.hid()|pyb.hid()]] |
| * pyb.hid((buttons, x, y, z)) – берет 4-элементный кортеж (или список) и отправляет его USB-хосту (ПК), чтобы сообщить о HID-событии движения мышки. | | * [[MicroPython:Библиотеки/pyb/pyb.info()|pyb.info()]] |
| Примечание: Эта функция устарела. Вместо нее используйте pyb.USB_HID.send().
| | * [[MicroPython:Библиотеки/pyb/pyb.main()|pyb.main()]] |
| * pyb.info([dump_alloc_table]) – печатает много информации о плате.
| | * [[MicroPython:Библиотеки/pyb/pyb.mount()|pyb.mount()]] |
| * pyb.main(filename) – задает название для главного скрипта, который будет запущен после завершения «boot.py». Если не вызвать эту функцию, будет выполнен «main.py», заданный по умолчанию. | | * [[MicroPython:Библиотеки/pyb/pyb.repl_uart()|pyb.repl_uart()]] |
| Эту функцию имеет смысл вызывать только из «boot.py».
| | * [[MicroPython:Библиотеки/pyb/pyb.rng()|pyb.rng()]] |
| * pyb.mount(device, mountpoint, *, readonly=False, mkfs=False)
| | * [[MicroPython:Библиотеки/pyb/pyb.sync()|pyb.sync()]] |
| Примечание: Эта функция устарела. Монтирование и размонтирование устройств теперь делаются при помощи функций uos.mount() и uos.umount().
| | * [[MicroPython:Библиотеки/pyb/pyb.unique_id()|pyb.unique_id()]] |
| Монтирует блочное устройство и делает его доступным в виде части файловой системы. В аргументе device должен быть задан объект с блочным протоколом. Функции ниже тоже устарели. О том, как правильно создавать блочные устройства, читайте в описании класса uos.AbstractBlockDev().
| | * [[MicroPython:Библиотеки/pyb/pyb.usb_mode()|pyb.usb_mode()]] |
| ** readblocks(self, blocknum, buf) | |
| ** writeblocks(self, blocknum, buf) (опционально)
| |
| ** count(self)
| |
| ** sync(self) (опционально)
| |
| Функции readblocks() и writeblocks() отвечают за копирование данных между буфером buf и блочным устройством, начиная с блока под номером blocknum на устройстве. В buf будет массив байтов с размером, кратным 512. Если функция writeblocks() не определена, то устройство монтируется только для чтения. Значение, возвращаемое двумя этими функциями, игнорируется.
| |
| Функция count() возвращает количество блоков, доступных на устройстве. Функция sync(), если реализована, синхронизирует данные на устройстве.
| |
| Аргумент mountpoint – это место в корне файловой системы, куда будет смонтировано устройство. Значение в нем должно начинаться с прямого слэша.
| |
| Если в readonly задано True, то устройство будет смонтировано только для чтения, в противном случае на нем будет доступно и чтение, и запись.
| |
| Если в mkfs задано True и если файловой системы еще нет, то она будет создана.
| |
| * pyb.repl_uart(uart) – задает или считывает объект UART, на котором запущен REPL. | |
| * pyb.rng() – возвращает 30-битное аппаратно-сгенерированное случайное число.
| |
| * pyb.sync() – синхронизирует все файловые системы. | |
| * pyb.unique_id() – возвращает строку с 12 байтами (96 битами), являющуюся уникальным ID микроконтроллера.
| |
| * pyb.usb_mode([modestr, ]port=-1, vid=0xf055, pid=-1, msc=(), hid=pyb.hid_mouse, high_speed=False) – если вызвать эту функцию без аргументов, она вернет строку, содержащую информацию о текущем USB-режиме. | |
| Если вызвать ее с аргументом modestr, она попытается задать USB-режим. Вот доступные значения для этого аргумента:
| |
| ** None – отключает USB.
| |
| ** 'VCP' – включает USB с VCP-интерфейсом (от англ. «virtual COM port», т.е. «виртуальный COM-порт»).
| |
| ** 'MSC' – включает USB с MSC-интерфейсом (от англ. «mass storage device class», т.е. «устройство-накопитель»). | |
| ** 'VCP+MSC' – включает USB с VCP- и MSC-интерфейсами.
| |
| ** 'VCP+HID' – включает USB с VCP- и HID-интерфейсами (от англ. «human interface device», т.е. «человеко-машинный интерфейс»).
| |
| ** 'VCP+MSC+HID' – включает USB с VCP-, MSC- и HID-интерфейсами (этот вариант доступен только на PYBD-платах).
| |
| В целях обратной совместимости под 'CDC' также подразумевается 'VCP' (то же самое касается режимов 'CDC+MSC' и 'CDC+HID').
| |
| В аргументе port должно быть целое число («0», «1» и т.д.) – в нем задается, какой USB-порт использовать, если плата оснащена несколькими USB-портами. Если задать «-1», это выберет порт по умолчанию или автоматически выбранный порт.
| |
| В аргументах vid и pid задаются VID (ID поставщика) и PID (ID продукта). Если задать в pid значение «-1», то PID будет выбран в зависимости от значения в modestr.
| |
| Если вы выбрали MSC-режим, то также можете задать аргумент msc, чтобы задать список адресов SCSI LUN, которые можно использовать через MSC-интерфейс. Например, msc=(pyb.Flash(), pyb.SDCard()).
| |
| Если вы выбрали HID-режим, то также можете задать дополнительные HID-данные при помощи аргумента hid. В нем задается кортеж в формате (subclass, protocol, max packet length, polling interval, report descriptor). По умолчанию в нем задаются параметры для USB-мышки. Также есть константа pyb.hid_keyboard с кортежем для USB-клавиатуры.
| |
| Если задать в аргументе high_speed значение True, это включит режим USB HS (если он поддерживается используемой платформой).
| |
|
| |
|
| == Классы == | | == Классы == |
Строка 142: |
Строка 69: |
| * [[MicroPython:Библиотеки/pyb/Класс USB_HID|Класс USB_HID]] - USB с HID-интерфейсом | | * [[MicroPython:Библиотеки/pyb/Класс USB_HID|Класс USB_HID]] - USB с HID-интерфейсом |
| * [[MicroPython:Библиотеки/pyb/Класс USB_VCP|Класс USB_VCP]] - USB c VCP-интерфейсом | | * [[MicroPython:Библиотеки/pyb/Класс USB_VCP|Класс USB_VCP]] - USB c VCP-интерфейсом |
|
| |
| <syntaxhighlight lang="python" enclose="div">
| |
|
| |
|
| =См.также= | | =См.также= |