|
Генерация ШИМ, STM32 и TIM1/TIM8 |
|
|
|
Dec 23 2013, 06:48
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Настроить TIM2-TIM5 на генерацию ШИМ довольно просто CODE void PwmInit(void) { //ch1 -PA0 GPIOA->CRL |= GPIO_CRL_MODE0; //50Mhz GPIOA->CRL &= ~GPIO_CRL_CNF0; //clear CNF[1:0] for PA0 GPIOA->CRL |= GPIO_CRL_CNF0_1; //output Push-Pull in alternative function mode //ch2 - PA1 GPIOA->CRL |= GPIO_CRL_MODE1; //50Mhz GPIOA->CRL &= ~GPIO_CRL_CNF1; //clear CNF[1:0] for PA1 GPIOA->CRL |= GPIO_CRL_CNF1_1; //output Push-Pull in alternative function mode //ch3 - PA2 GPIOA->CRL |= GPIO_CRL_MODE2; //50Mhz GPIOA->CRL &= ~GPIO_CRL_CNF2; //clear CNF[1:0] for PA2 GPIOA->CRL |= GPIO_CRL_CNF2_1; //output Push-Pull in alternative function mode //ch4 - PA3 GPIOA->CRL |= GPIO_CRL_MODE3; //50Mhz GPIOA->CRL &= ~GPIO_CRL_CNF3; //clear CNF[1:0] for PA3 GPIOA->CRL |= GPIO_CRL_CNF3_1; //output Push-Pull in alternative function mode //TIM2 Settings RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; TIM2->CR1 |= TIM_CR1_ARPE; //autorelode mode TIM2->CCMR1 |= TIM_CCMR1_OC1PE | TIM_CCMR1_OC2PE; //Output Compare Preload enable TIM2->CCMR2 |= TIM_CCMR2_OC3PE | TIM_CCMR2_OC4PE; //TIM2->PSC = 71; //1us TIM2->ARR = 8000; // 8000*14ns = 112us = 8928Hz TIM2->CCR1 = 4000; //ch1 1duty cycle = 50% TIM2->CCR2 = 4000; //ch2 1duty cycle = 50% TIM2->CCR3 = 4000; //ch2 1duty cycle = 50% TIM2->CCR4 = 4000; //ch2 1duty cycle = 50% //TIM2->CCER |= TIM_CCER_CC2P; //polarity of output signal //Capture/Compare 2 output enable TIM2->CCER |= TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E; //Output Compare Mode - 110 - PWM mode 1 TIM2->CCMR1 |= (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1); TIM2->CCMR1 |= (TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1); TIM2->CCMR2 |= (TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1); TIM2->CCMR2 |= (TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1); //start counting TIM2->CR1 |= TIM_CR1_CEN; } Все просто все понятно. С TIM1/TIM8 не все так понятно - там другие регистры и я, честно говоря, запутался. Может кто нибудь работал с этими таймерами и может прояснить ситуацию? Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
Dec 24 2013, 23:15
|

Местный
  
Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528

|
Цитата(Jenya7 @ Dec 24 2013, 20:09)  ...засада с напряжениями - с мегой я работал на 5-ти вольтах, и там сигналы с AB энкодера амплитудой 9 вольт я подавал через резистор напрямую на пины и все работало... Ерундой страдаете... 1. Сложно пересчитать делитель c 9->5 на 9->3.3? 2. Вы не знаете, что I/O в stm32 “5 V-tolerant”?
--------------------
Для связи email: info собака qbit.su
|
|
|
|
Сообщений в этой теме
Jenya7 Генерация ШИМ Dec 23 2013, 06:48 smk Настраивается все... что именно нужно объяснить? Dec 23 2013, 07:26 Jenya7 Цитата(smk @ Dec 23 2013, 13:26) Настраив... Dec 23 2013, 07:58  SSerge Цитата(Jenya7 @ Dec 23 2013, 14:58) желат... Dec 23 2013, 08:33 smk Кодvoid Timer1_Init (void)
{
RCC->APB... Dec 23 2013, 08:24 Jenya7 спасибо большое. сейчас проверю. Dec 23 2013, 08:46     smk Цитата(Jenya7 @ Dec 25 2013, 09:00) а есл... Dec 25 2013, 07:52      Jenya7 Цитата(smk @ Dec 25 2013, 13:52) Так диод... Dec 25 2013, 08:04       smk Цитата(Jenya7 @ Dec 25 2013, 10:04) то ес... Dec 25 2013, 08:23 Vendict Делаю на stm32 (именно на STM32F103C8) кассу для с... Sep 1 2014, 09:01 Golikov A. RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE... Sep 1 2014, 09:50 Vendict Цитата(Golikov A. @ Sep 1 2014, 13:50) RC... Sep 1 2014, 10:11 Golikov A. там надо по всем функциям пройтись
особенно где вы... Sep 1 2014, 10:18 Vendict Цитата(Golikov A. @ Sep 1 2014, 14:18) ос... Sep 1 2014, 10:31  Vendict Вот мои ошибки:
Цитата(Vendict @ Sep 1 2014,... Sep 1 2014, 20:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|