ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
966773 Топик полностью
evgeniy1294 (24.12.2019 21:10 - 21:16, просмотров: 385) ответил Ксения на Въедливые вопросы закоренелой AVRовщицы по поводу STM32 :)
Вопрос понятен, отвечаю по пунктам: 1) В доке написано: "The GPIO registers can be accessed by byte (8 bits), half-words (16 bits) or words (32 bits). " . Т.е в любой регистр можно писать по байту, полуслову и слову. 2) Фраза "С регистром ODR нужно обращаться крайне нежно!!!" означает, что программист должен понимать, что запись в регистр ODR влияет на весь параллельный порт и неатомарна (в примере на целый порт есть только светодиод, поэтому я не парюсь + пример должен был быть простым). Пользоваться этим регистром конечно же можно, я его использую, чтобы управлять сразу всем портом 3) Если мне нужно управлять отдельными битами - тут в игру вступает BSRR. Одновременно можно как устанавливать, так и сбрасывать биты: GPIOB->BSRR = (RST_MASK << 16)|SET_MASK; Если оба бита BS и RS установлены, BS в приоритете ( If both BSx and BRx are set, BSx has priority): GPIOB->BSRR = 0b01 | (0b01 << 16); // B0 будет установлен в 1 4) Что случится с битами порта, если долбануть по его ODR, когда эти биты уже несут альтернативные функции (JTAG, UART, SPI, ADC и т.п.)? Скорее всего ничего не произойдет (смотри ниже), так как внутри все разруливает мультиплексор (но это не точно, смотри эррату). А вот если полезешь в регистры типа MODER/PUPDR и д.р конфигурационные - будет бо-бо. Также это зависит от серии. В stm32f103 - так делать категорически нельзя, так как подтяжка входа управляется также записью в порт. Забыл написать, с JTAG я не проверял. Надо в доке смотреть на конкретный чип настройки по-умолчанию этих ног.
image