STM32CubeIDE (вопросы и ответы)

А вот это странно. По адресу регистра первым лежит младший байт. Похоже на то, что вы совершенно запутались в коде.

И где пример?

Крутой вывод :man_facepalming:
Ну покажите ошибку, раз вы такой знающий.

И да, в DS на МК есть табличка, показывающая как байты из 8 бит памяти переносятся на 32 бита периферии, думаю сами найдёте :slight_smile:
Более вероятно, что в TIM надо подкрутить.

Update: в DS табличка, описывающая различную ширину передаваемых данных для случая, когда увеличиается и адрес периферии и памяти, в моем случае адрес периферии фиксированный.
Так что непонятно как это реализовано в CubeMX :thinking:

STM32, таймеры.

Очень интересно (пока только читаю, разбираюсь), но появились вопросы на которые не смог сам найти ответы:

  1. Внешнее тактирование таймеров, как я понял, всё равно «привязывается» к системной шине. В чем тогда смысл внешнего тактирования? Нет, я понимаю, что например, можно определять ширину (длительность) импульса и тп, но как по мне это не совсем тактирование….
  2. Внешние источники тактирования для каждого таймера свои (то есть выведены на определенные «лапы»). Общего внешнего тактирования не бывает? То есть общим может быть только системная шина?

Что-то еще было, пока писал - забыл. Вспомню - напишу…


Диаграмма внешнего тактирования. Мода 1 привязки к внутреннему такту нет.

Зачем нескольким таймерам внешнее тактирование с одной ноги? У каждого может быть своё, а хочешь общее объедини ноги снаружи.
Вот только за 20 с лишним лет работы с МК внешнее тактирование не использовал ни разу. В моих задачах такой нужды не возникло.

Аналогично. Любопытно, для чего это кому-то бы понадобилось…

Я так считаю - если такая возможность имеется, да еще на аппаратном уровне - значит кем-то довольно хорошо используется.
Просто хотелось разобраться в особенностях внешнего тактирования таймера.
Но я всё больше разбираясь в этом прихожу к выводу, что это не совсем тактирование.
Внешняя тактовая частота должна быть в два раза ниже частоты шины (ну и где тут не привязка?), ну и так далее - много “особенностей”.

к фразе “внешнее тактирование” таймеров думаю надо относиться не как тактирование, а просто как подача таймерам управляющих сигналов.

Типичный пример - таймер в режиме энкодера.

Вот и я, читая, пришел к подобному выводу…

А что есть тактирование для таймера? Тем более внешнее. Что оно вообще делает?

а я не знаю :slight_smile:
в документации на МК есть ну наверное десяток картинок как работаеют таймеры в различных режимах, и на диаграммах нарисовано что происходит в зависимости от внешнего сигнала.

ЗЫ. Предлагаю запинать того, кто вообще придумал фразу “тактирование таймера” :rofl:

Это все от не понимания того, что это НЕ ТАЙМЕР, а ТАЙМЕР-СЧЁТЧИК.
Тактировать можно откуда угодно. Я, допустим, как то, позиционирование делал шагового двигателя по импульсам step, этого же самого двигателя.

писать не охота, инфы навалом в тырнете
кратко

  • Захвата сигнала.
  • Сравнения.
  • Генерации ШИМ.
  • Генерации одиночного импульса.

или

Осознал глупость написанного выше когда нажал кнопку отправить.

Видимо это когда на счетный вход подаются внешние импульсы. В Пиках есть режим асинхронного счета и синхронного - как в stm32 примерно. Можно юзать для измерения частоты, если она высокая.
А вот выдачу частоты/периода можно только с дискретностью в 16бит сделать, а не 32. Например.

Если действительно хорошо знаешь - расскажи что это такое?

Асинхронный счет это тупо как обычный аппаратный счетчик считает. При его считывании надо предусматривать что счетный импульс придет в момент чтения. Или записи. Это сбивало часы в старых Пиках, например.

Синхронный синхронизируется с частотой процессора. Для чего это надо смотреть. Соотв. макс частота счета меньше.

В стм32 по ср с Пиками таймеры чертовски навороченные. Пики мне только аппаратно больше нравятся: питание 1,8 - 5в, жрут микроамперы, вроде не так горят как другие.

Энкодер на таймере стм32 кто-нибудь юзал? В чем его плюсы?

То есть асинхронный просто считает +1 и не важно успевает ли за это время цп такт сделать или нет? Интересная технология (для меня, по крайней мере, это новинка).

Именно. Как простая микросхема-счетчик. Не помню в стм32 есть ли такой режим таймера. Для считывания обычно использует «теневой» регистр, куда можно скопировать счетчик, а потом оттуда неторопливо читать.

И так же его перезагружать при достижении опр. значения - те получим выдачу импульсов заданной длительности.

В стм32 шикарный прескалер, генератор от 0,1гц до 10кгц делал с 15битной точностью. Хотел 32бита, но тогда только 1 импульс получалось такой выдать, а не непрерывно.