реклама на сайте
подробности

 
 
> STM32F103R8 Первый таймер запустить на выход в режиме ШИМ, Все таймеры работают, а первый не хочет :(
Serj78
сообщение Dec 24 2009, 05:04
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Пытаюсь заставить работать первый таймер в STM32F103R8 , чтобы он работал в в режиме PWM1.
Использую Keil? там есть удобный Configuration wisard.

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

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

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

Пытаюсь это все сделать на отладочной плате STM32-P103.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Brain13
сообщение Mar 21 2011, 05:43
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 28-08-09
Пользователь №: 52 078



Такая же проблема, таймер работает, нога не дергается. Вот инициализация:
Код
    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);

Что я не сделал?
Go to the top of the page
 
+Quote Post
Serj78
сообщение Mar 23 2011, 17:53
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



DIER регистра не вижу sm.gif
В первом таймере есть специальный регистр мертвого времени и аппаратной защиты ( первый таймер предназначен для 3-ф мотора)
В моем случае я также пользовался функциями из библиотек к отладочной плате, нифига не работало,
потом прописал руками регистры , прямо в лоб числами.- все заработало .
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 04:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016