Как правильно настроить Timer9 (TIM9) на STM32F405xx для подсчета импульсов по переднему фронту? Существует ли специальная конфигурация для вывода таймера за пределами этого короткого примера?
Вот что я сделал до сих пор, а также следовал примеру BRIEF из справочного руководства, скопированному здесь:
Например, чтобы настроить обратный счетчик для подсчета в ответ на нарастающий фронт на входе TI2, используйте следующую процедуру:
Настройте канал 2 для обнаружения нарастающих фронтов на входе TI2, записав CC2S = '01' в регистре TIMx_CCMR1.
Настройте длительность входного фильтра, записав биты IC2F[3:0] в регистр TIMx_CCMR1 (если фильтр не нужен, оставьте IC2F='0000').
- Выберите полярность переднего фронта, написав CC2P='0' и CC2NP='0' в регистре TIMx_CCER.
- Настройте таймер в режиме внешних часов 1, написав SMS='111' в регистре TIMx_SMCR.
- Выберите TI2 в качестве источника входного сигнала триггера, написав TS='110' в регистре TIMx_SMCR.
- Включите счетчик, написав CEN='1' в регистре TIMx_CR1.
Я считаю, что сделал все вышеперечисленное правильно, но чтение регистра всегда возвращает 0. Есть ли какие-либо дополнительные настройки в другом регистре для подключения к таймеру? Я читал, alternate functions
но не мог найти ничего конкретного о таймерах и пинах.
Я свободно следую этому как ссылке на код: https://www.ghielectronics.com/docs/108/register-access
Техническое описание чипа: http://www.st.com/web/en/resource/technical/document/datasheet/DM00037051.pdf
Справочное руководство по семейству микросхем: http://www.st.com/web/en/resource/technical/document/reference_manual/DM00031020.pdf
Первое, что я всегда проверяю, это убедиться, что все часы, которые мне нужны, включены. Вам нужно убедиться, что часы для APB2 (TIM9) и AHB1 (GPIO) включены. Кроме того, функции таймера являются альтернативными функциями, поэтому вам необходимо установить биты GPIOx_MODER
для соответствующего порта и вывода, которые вы используете, а также соответствующие GPIOx_AFRy
биты.
Техническое описание и справочное руководство должны содержать всю необходимую информацию, иногда нужно просто немного потрудиться, чтобы найти то, что вы ищете.
TIMx_CNT
регистре обратно на 0? Я пытался использовать RCC_APB2RSTR
для сброса, но я думаю, что это возвращает все по умолчанию.UG
бита в 1, TIMx_EGR
кажется, сбрасывает счетчик и не влияет на остальную часть настройки ... пока
А.Мак
ГисМофкс
RCC_APB2ENR
в ref manual, но не могу найти адрес в datasheet.ГисМофкс
RCC
в шине AHB1, начиная с 0x40023800, и в справочном руководстве показано смещение 0x44 дляRCC_APB2ENR
. бит 16 - это TIM9EN. Я установил этот бит, и я все еще получаю ноль.А.Мак
А.Мак
ГисМофкс
А.Мак