Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: TIM1 в STM32F100
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ELEKTROS
Не получается завести ШИМ от TIM1, погуглил и понял что не я один такой и толкового исходника я не нашёл работающего. Вот мой код инициализации для всех таймеров что я использую, пробовал и в регистры писать и библиотеками, результата ноль:
Код:
CODE
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_ICInitTypeDef TIM_ICInitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;

TIM_BDTRInitTypeDef TIM_BDTRInitStruct;

TIM_TimeBaseInitStruct.TIM_Prescaler=0;
TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up; // íàñòðîéêà ñ÷¸òà ââåðõ
TIM_TimeBaseInitStruct.TIM_Period=150;
TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1; // ïðåääåëèòåëü òàêòèðîâàíèÿ òàéìåðà

TIM_TimeBaseInit(TIM7, &TIM_TimeBaseInitStruct);

TIM_TimeBaseInitStruct.TIM_Prescaler=49;
TIM_TimeBaseInitStruct.TIM_Period=1500;
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseInitStruct); // ÷àñòîòà ïåðåïîëíåíèÿ 10Ãö

TIM_TimeBaseInitStruct.TIM_Prescaler=9;
TIM_TimeBaseInitStruct.TIM_Period=0xFFFF;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);

TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_CenterAligned3; // íàñòðîéêà ñ÷¸òà ââåðõ-âíèç
TIM_TimeBaseInitStruct.TIM_Prescaler=0;
TIM_TimeBaseInitStruct.TIM_Period=4000; // ïðèìåðíî 3000 Ãö
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 4000;

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStruct);

TIM_ICInitStruct.TIM_Channel=TIM_Channel_1;
TIM_ICInitStruct.TIM_ICPolarity=TIM_ICPolarity_Falling;
TIM_ICInitStruct.TIM_ICSelection=TIM_ICSelection_DirectTI;
TIM_ICInitStruct.TIM_ICPrescaler=TIM_ICPSC_DIV1;
TIM_ICInitStruct.TIM_ICFilter=0xF;

TIM_ICInit(TIM2, &TIM_ICInitStruct);

TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Disable;
TIM_OCInitStruct.TIM_OutputNState = TIM_OutputNState_Disable;
TIM_OCInitStruct.TIM_Pulse=3000; // 75% ØÈÌ
TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OCInitStruct.TIM_OCNPolarity = TIM_OCPolarity_High;
TIM_OCInitStruct.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStruct.TIM_OCNIdleState = TIM_OCNIdleState_Reset;

TIM_OC1Init(TIM3, &TIM_OCInitStruct);
TIM_OC1Init(TIM1, &TIM_OCInitStruct);
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
TIM_OC1FastConfig(TIM3,TIM_OCFast_Enable);
TIM_OC1FastConfig(TIM1,TIM_OCFast_Enable);
TIM_OC2Init(TIM3, &TIM_OCInitStruct);
TIM_OC2Init(TIM1, &TIM_OCInitStruct);
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);
TIM_OC2FastConfig(TIM3,TIM_OCFast_Enable);
TIM_OC2FastConfig(TIM1,TIM_OCFast_Enable);
TIM_OC3Init(TIM3, &TIM_OCInitStruct);
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_OC3FastConfig(TIM3,TIM_OCFast_Enable);
TIM_OC4Init(TIM3, &TIM_OCInitStruct);
TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_OC1FastConfig(TIM3,TIM_OCFast_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_ARRPreloadConfig(TIM1, ENABLE);

TIM_BDTRInitStruct.TIM_OSSRState = TIM_OSSRState_Disable;
TIM_BDTRInitStruct.TIM_OSSIState = TIM_OSSIState_Disable;
TIM_BDTRInitStruct.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
TIM_BDTRInitStruct.TIM_DeadTime = 0;
TIM_BDTRInitStruct.TIM_Break = TIM_Break_Disable;
TIM_BDTRInitStruct.TIM_BreakPolarity = TIM_BreakPolarity_High;
TIM_BDTRInitStruct.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;

TIM_BDTRConfig(TIM1, &TIM_BDTRInitStruct);

код инициальзации пинов:

Код:
CODE
GPIO_InitTypeDef GPIO_InitStructure;


GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_Init(GPIOB, &GPIO_InitStructure);


GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

Именно включение ШИМ в коде дальше: TIM_CCxCmd(TIM1,TIM_Channel_1,ENABLE); или BIT-BANG: SETBIT_REG_PERIPH((TIM1->CCER),0), но не суть. Единичка пишиться проверял в отладке. Использую первый и второй каналы.
AHTOXA
Не вижу включения тактирования таймера:
Код
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
ELEKTROS
тактирование в другой функции включается, забыл сюда поместить.
ELEKTROS
С TIM15 всё получилось, а с этим никак, сделал на нём, но всё таки хотелосьбы и с первым разобраться.
AHTOXA
Давайте свой код, будем разбираться.
ELEKTROS
ну код как бы выше, вставлял ваш код в новый проект таже петрушка.
вот это вот вставлял даже наверное два раза sm.gif:
TIM1->BDTR |= TIM_BDTR_MOE; // Специальная фишка у T1 и T8 - Main Output Enable
MiklPolikov
Подскажите, как называется документация на STM32F100C4T6B в которой написано как пользоваться периферией ? (вся периферия, регистры и т.п)
Сам не могу найти на сайте st

Спасибо.
spectral1989
http://yandex.ru/yandsearch?text=reference...47639&lr=67

первая ссылка
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.