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

 
 
> Генерация ШИМ, STM32 и TIM1/TIM8
Jenya7
сообщение Dec 23 2013, 06:48
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 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 не все так понятно - там другие регистры и я, честно говоря, запутался.
Может кто нибудь работал с этими таймерами и может прояснить ситуацию? Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Dec 23 2013, 19:27
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



спасибо все классно работает. sm.gif
Go to the top of the page
 
+Quote Post
smk
сообщение Dec 24 2013, 07:54
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(Jenya7 @ Dec 23 2013, 21:27) *
спасибо все классно работает. sm.gif

Рад за Вас. Что следующее помочь настроить?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 24 2013, 16:09
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(smk @ Dec 24 2013, 12:54) *
Рад за Вас. Что следующее помочь настроить?

честно говоря опасений много, перевожу апликашку с меги на STM32, пока вобщем камнем доволен, но чувствую еще наступлю на пару граблей - вот тогда и обращусь за помощью. спасибо. sm.gif
off-top: засада с напряжениями - с мегой я работал на 5-ти вольтах, и там сигналы с AB энкодера амплитудой 9 вольт я подавал через резистор напрямую на пины и все работало. Тут же нужен преобразователь уровней. Больше всего понравился CD4050.
Go to the top of the page
 
+Quote Post
bzx
сообщение Dec 24 2013, 23:15
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 25 2013, 07:00
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(bzx @ Dec 25 2013, 05:15) *
Ерундой страдаете...
1. Сложно пересчитать делитель c 9->5 на 9->3.3?
2. Вы не знаете, что I/O в stm32 “5 V-tolerant”?


а если всплеск напряжения на входе?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


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


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