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

 
 
> 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



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:14
Рейтинг@Mail.ru


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