Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F103R8 Первый таймер запустить на выход в режиме ШИМ
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Serj78
Пытаюсь заставить работать первый таймер в STM32F103R8 , чтобы он работал в в режиме PWM1.
Использую Keil? там есть удобный Configuration wisard.

таймеры 2 и 3 удалось запустить без проблем, а вот 1-ый почему-то не хочет работать. бит MOE в регистре BTDR установлен в 1, остальные установки как у других таймеров.
Тактирование включено, ноги OC3N (PB15), OC2N (PB14) в переключены на альтернативный выход.

анализ регистра самого таймера (CNT) показывает, что таймер сам считает, на изменение числа прескалера реагирует.

Что еще надо включить, подкажите....

Пытаюсь это все сделать на отладочной плате STM32-P103.
Brain13
Такая же проблема, таймер работает, нога не дергается. Вот инициализация:
Код
    RCC->APB2ENR |= RCC_APB2ENR_IOPСEN;
    RCC->APB2ENR |= RCC_APB2Periph_AFIO;
    RCC->APB2ENR |= RCC_APB2ENR_TIM8EN;

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    TIM_TimeBaseStructure.TIM_Period = 1800-1;
    TIM_TimeBaseStructure.TIM_Prescaler = 0;
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

    TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
    TIM_ARRPreloadConfig(TIM8, ENABLE);

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
    TIM_OCInitStructure.TIM_Pulse = 900-1;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
    TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;

    TIM_OC1Init(TIM8, &TIM_OCInitStructure);
    TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);

    NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    TIM_ITConfig(TIM8, TIM_IT_Update, ENABLE);

    TIM_CtrlPWMOutputs(TIM8, ENABLE);
    TIM_Cmd(TIM8, ENABLE);

Что я не сделал?
Serj78
DIER регистра не вижу sm.gif
В первом таймере есть специальный регистр мертвого времени и аппаратной защиты ( первый таймер предназначен для 3-ф мотора)
В моем случае я также пользовался функциями из библиотек к отладочной плате, нифига не работало,
потом прописал руками регистры , прямо в лоб числами.- все заработало .
gba
Цитата(Serj78 @ Mar 23 2011, 20:53) *
DIER регистра не вижу sm.gif
В первом таймере есть специальный регистр мертвого времени и аппаратной защиты ( первый таймер предназначен для 3-ф мотора)
В моем случае я также пользовался функциями из библиотек к отладочной плате, нифига не работало,
потом прописал руками регистры , прямо в лоб числами.- все заработало .

Только наверно не DIER, а BDTR (Break and Dead Time Register)? DIER как раз задан через TIM_ITConfig()...

Цитата(Brain13 @ Mar 21 2011, 08:43) *
Что я не сделал?

В BDTR попробуйте отключить Break в принципе. У меня из-за этого была похожая проблема, причем я так и не понял как правильно Break настроить.

PS Вообще говоря, если пользуетесь библиотекой, то лучше все через ее функции делать, в том числе и настройку RCC, а то каша получается.
Brain13
Как ни странно, но этот код заработал. Я просто с кодом экспериментировал, а камень не зашивал sm.gif .

Цитата
PS Вообще говоря, если пользуетесь библиотекой, то лучше все через ее функции делать, в том числе и настройку RCC, а то каша получается.

Да, что то раньше внимания не обращал, а Вы сказали - задумался. Надо будет переписать работу с RCC.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.