Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: запустить ШИМ на TIM3 STM32F103
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
andreichk
Привет народ, подскажите как правильно заремапить и запустить ШИМ на таймере TIM3 или TIM8 ?
Срисовал код инита, пытаюсь подать на выход PC6,PC7 импульсы, но что-то наверное не так или недоделано.

CODE
void pwm_init(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Enable GPIOC clocking
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // Enable TIM3 clocking
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // Enable AFIO clocking

////////////////////////// GPIO
GPIOC->CRL = (GPIO_CRL_MODE7 |
GPIO_CRL_CNF7_1); // PC7 - Output mode 50 MHz
GPIOC->CRL &= (~GPIO_CRL_CNF7_0); // and alternate push-pull

//----------------------------------------
GPIOC->CRL |= (GPIO_CRL_MODE6 |
GPIO_CRL_CNF6_1); // PC6 - Output mode 50 MHz
GPIOC->CRL &= (~GPIO_CRL_CNF6_0); // and alternate push-pull
//----------------------------------------
GPIOC->CRL |= (GPIO_CRL_MODE6 |
GPIO_CRL_MODE7 |
GPIO_CRL_CNF6_1 |
GPIO_CRL_CNF7_1); // PC6, PC7 - Output mode 50 MHz
GPIOC->CRL &= (~(GPIO_CRL_CNF6_0 |
GPIO_CRL_CNF7_0)); // and alternate push-pull
GPIOC->ODR = 0x0000;

//---------------------------------------
AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP_0;
AFIO->MAPR &= (~AFIO_MAPR_TIM3_REMAP_1);

//////////////////////////////// PWM Timer 3
TIM3->CR1 = TIM_CR1_ARPE;
TIM3->PSC = 8;
TIM3->ARR = 0x00FF;

TIM3->CCR1 = 100;
TIM3->CCR2 = 0xFF;
TIM3->CCR3 = 0x00;
TIM3->CCR4 = 0x00;

TIM3->CCMR1 = (TIM_CCMR1_OC1PE | TIM_CCMR1_OC1M |
TIM_CCMR1_OC2PE | TIM_CCMR1_OC2M);

TIM3->CCER = (TIM_CCER_CC1E | /*TIM_CCER_CC1P |*/
TIM_CCER_CC1NE | /*TIM_CCER_CC1NP |*/
TIM_CCER_CC2E | /*TIM_CCER_CC2P |*/
TIM_CCER_CC2NE /*| TIM_CCER_CC2NP*/);

TIM3->BDTR = (TIM_BDTR_MOE | ((4<<5) | 10));

TIM3->CR1 |= TIM_CR1_CEN;
}

// Задать скважность (0-0xFFFF)
void pwm_Set(uint16_t wert)
{
TIM3->CCR1 = wert;
}
zheka
Цитата
// PC7 - Output mode 50 MHz


А вы говорите - вход.
andreichk
простите, где я говорил - вход ? Оба порта на выход работают

таки я запустил ШИМ посредством замены на : AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP_FULLREMAP;// AFIO_MAPR_TIM3_REMAP_0;
и TIM3->CCR1 = 100;
TIM3->CCR2 = 100;//0xFF; для второго канала.

Спасибо всем за участие. Если есть какие-либо дополнения\пожелания - милости просим..
zheka
Цитата
пытаюсь подать на выход PC6,PC7 импульсы

пардон... я с бодуна...
решил, что вы тактируете таймер от GPIO...

Попробуйте так
AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP_FULLREMAP;

Черт.. опоздал с советом.
andreichk
Цитата(zheka @ Aug 31 2013, 13:41) *
Черт.. опоздал с советом.
ничё, всё равно спасибо, я начинающий, так что вопросов ещё много будет
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.