|
|
(не показано 5 промежуточных версий этого же участника) |
Строка 29: |
Строка 29: |
| == Функции для работы с электропитанием == | | == Функции для работы с электропитанием == |
|
| |
|
| * 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 (если он поддерживается используемой платформой).
| |
|
| |
|
| == Классы == | | == Классы == |
Строка 111: |
Строка 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">
| |
|
| |
|
| =См.также= | | =См.также= |