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

 
 
> ШИМ в STM32F4
stm32f4
сообщение Aug 13 2012, 11:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 11-08-12
Пользователь №: 73 098



Всем привет!Битый час сижу и не могу настроить ШИМ(
Пытаюсь настроить шим на ноге РА2, вроде все сделал как в даташите, но.............
Код
//***********TIM2***************
    RCC->APB1ENR    |=RCC_APB1ENR_TIM2EN;        // тактирование таймера
    GPIOA->MODER    |=0x4;
    TIM2->CR1        |= TIM_CR1_CMS;                // выравнивание по центру
    TIM2->PSC         = 16000-1;
    TIM2->ARR        = 0xFF;                        // счетный регистр (период шима)
    TIM2->CCMR2        |= TIM_CCMR2_OC3CE;            // !
    TIM2->CCMR2        |= TIM_CCMR2_OC3M;            // инвертированный шим
    TIM2->CCER         |= TIM_CCER_CC3E;            // разрешаем таймеру использование ШИМ
    TIM2->CR1         |= TIM_CR1_CEN;                // запуск таймера
    TIM2->CR1         |= TIM_CR1_ARPE;            // разрешаем перезагрузку ARR
    TIM2->CCR3        =0x1F;

Я правильно понимаю?, чтобы запустить шим на ноге РА2(канал СН3) мне нужно работать с регистроми CCMR2, ну и CCR3 !

Сообщение отредактировал stm32f4 - Aug 13 2012, 11:47
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Aug 14 2012, 09:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Код
GPIOA->AFR[1]


Нужно GPIOA->AFR[0]
Go to the top of the page
 
+Quote Post
stm32f4
сообщение Aug 14 2012, 10:23
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 11-08-12
Пользователь №: 73 098



Цитата(adnega @ Aug 14 2012, 13:39) *
Код
GPIOA->AFR[1]


Нужно GPIOA->AFR[0]

Воу, работает! По видимому, это глупый вопрос, но все же! Если чесн то я не оч понимаю что этот регистр вообще делает(
что означают все эти значения?
Код
AFRLy selection:
0000: AF0
0001: AF1
0010: AF2
0011: AF3
0100: AF4
0101: AF5
0110: AF6
0111: AF7
1000: AF8
1001: AF9
1010: AF10
1011: AF11
1100: AF12
1101: AF13
1110: AF14
1111: AF15
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 14 2012, 11:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(stm32f4 @ Aug 14 2012, 14:23) *
Воу, работает! По видимому, это глупый вопрос, но все же! Если чесн то я не оч понимаю что этот регистр вообще делает(
что означают все эти значения?

Это не глупый, а правильный вопрос (которого от Вас ждут второй день).

Набор регистров AFR выбирает для пина необходимую альтернативную функцию.
Например, на выбранном Вами пине PA2 "сидит" еще:
- TIM2_CH3;
- TIM5_CH3;
- TIM9_CH14
- USART2_TX;
- ETH_MDIO.

Каким образом камень узнает, что вы хотите видеть на пине PA2? Никаким!

Для этого Вы настраиваете PA2 для работы, скажем, с TIM2_CH3 (а это AF1) в регистре альтернативных функций AFR. Поглядеть на каком пине что сидит и номер альтернативной функции можно в datasheet в таблице "Alternate function mapping".

Справедливости ради замечу, что раньше выбор той или иной альтернативной функции определялся тактированием того или иного периферийного узла и не было возможности частично задействовать некоторые пины в группе выводов для SPI, а некоторые для TIMER. От этого errata у STM32F1xx разрасталась. И слава Инженерам STM, что в F4 нет такого гемора.
Go to the top of the page
 
+Quote Post
stm32f4
сообщение Aug 14 2012, 12:58
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 11-08-12
Пользователь №: 73 098



Цитата(adnega @ Aug 14 2012, 15:25) *
Это не глупый, а правильный вопрос (которого от Вас ждут второй день).

Набор регистров AFR выбирает для пина необходимую альтернативную функцию.
Например, на выбранном Вами пине PA2 "сидит" еще:
- TIM2_CH3;
- TIM5_CH3;
- TIM9_CH14
- USART2_TX;
- ETH_MDIO.

Каким образом камень узнает, что вы хотите видеть на пине PA2? Никаким!

Для этого Вы настраиваете PA2 для работы, скажем, с TIM2_CH3 (а это AF1) в регистре альтернативных функций AFR. Поглядеть на каком пине что сидит и номер альтернативной функции можно в datasheet в таблице "Alternate function mapping".

Справедливости ради замечу, что раньше выбор той или иной альтернативной функции определялся тактированием того или иного периферийного узла и не было возможности частично задействовать некоторые пины в группе выводов для SPI, а некоторые для TIMER. От этого errata у STM32F1xx разрасталась. И слава Инженерам STM, что в F4 нет такого гемора.

Ого, тк это еще и очень важный регистр)
Странно, почему при включении в регистре AFR, любого, второго ШИМ-а, МК начинает себя вести фантастическим образом. Все зависает!!! кроме того ШИМ-а, которому последним установили AFR.

Код
//***********TIM2***************
    RCC->APB1ENR    |= RCC_APB1ENR_TIM2EN;        // тактирование таймера
    GPIOA->MODER    |= 0x20;                    // Alternate function mode
    GPIOA->AFR[0]    |= (1 << (2 * 4));            //
    TIM2->CR1        |= TIM_CR1_CMS;                // выравнивание по центру
    TIM2->PSC         = 0;
    TIM2->ARR        = 1000;                        // счетный регистр (период шима)
    TIM2->CCMR2        |= TIM_CCMR2_OC3CE;            // !
    TIM2->CCMR2        |= TIM_CCMR2_OC3M;            // инвертированный шим
    TIM2->CCER         |= TIM_CCER_CC3E;            // разрешаем таймеру использование ШИМ
    TIM2->CR1         |= TIM_CR1_ARPE;            // разрешаем перезагрузку ARR
    TIM2->CCR3        =222;
    //-----------------
    GPIOA->MODER    |= 0x2;                        // Alternate function mode
    GPIOA->AFR[0]    |= 1;                        //
    TIM2->CCMR1        |= TIM_CCMR1_OC1M;            // инвертированный шим
    TIM2->CCER         |= TIM_CCER_CC1E;            // разрешаем таймеру использование ШИМ
    TIM2->CCR1        = 22;
    TIM2->CR1         |= TIM_CR1_CEN;                // запуск таймера


Сообщение отредактировал stm32f4 - Aug 14 2012, 12:59
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 14 2012, 16:27
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(stm32f4 @ Aug 14 2012, 16:58) *
Ого, тк это еще и очень важный регистр)
Странно, почему при включении в регистре AFR, любого, второго ШИМ-а, МК начинает себя вести фантастическим образом. Все зависает!!! кроме того ШИМ-а, которому последним установили AFR.

Код
    //-----------------
    GPIOA->MODER    |= 0x2;                        // Alternate function mode
    GPIOA->AFR[0]    |= 1;                        //
    TIM2->CCMR1        |= TIM_CCMR1_OC1M;            // инвертированный шим
    TIM2->CCER         |= TIM_CCER_CC1E;            // разрешаем таймеру использование ШИМ
    TIM2->CCR1        = 22;
    TIM2->CR1         |= TIM_CR1_CEN;                // запуск таймера

Может Вы запустили ШИМ на ноге PA0, которая в STM32F4DISCOVERY соединена с питанием через резистор (330 Ом) и конденсатор (100 нФ)?
Go to the top of the page
 
+Quote Post
stm32f4
сообщение Aug 15 2012, 10:50
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 11-08-12
Пользователь №: 73 098



Цитата(adnega @ Aug 14 2012, 20:27) *
Может Вы запустили ШИМ на ноге PA0, которая в STM32F4DISCOVERY соединена с питанием через резистор (330 Ом) и конденсатор (100 нФ)?

Спасибо большое за помощь, Вы снова оказались правы)

Сообщение отредактировал stm32f4 - Aug 15 2012, 10:54
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- stm32f4   ШИМ в STM32F4   Aug 13 2012, 11:45
- - sidy   Тактирование порта GPIOA разрешено? Счет таймера T...   Aug 13 2012, 15:21
|- - stm32f4   Цитата(sidy @ Aug 13 2012, 19:21) Тактиро...   Aug 13 2012, 15:22
|- - adnega   Цитата(stm32f4 @ Aug 13 2012, 19:22) угу)...   Aug 13 2012, 15:33
|- - stm32f4   Цитата(adnega @ Aug 13 2012, 19:33) Да ну...   Aug 13 2012, 16:11
|- - adnega   Цитата(stm32f4 @ Aug 13 2012, 20:11) ну ч...   Aug 13 2012, 16:35
|- - stm32f4   Цитата(adnega @ Aug 13 2012, 20:35) Вы же...   Aug 14 2012, 09:24
- - BlackOps   тут небольшой вопрос хотел бы уточнить, чтоб новой...   Aug 23 2012, 05:11
- - BlackOps   мне кажется что клок таймера ТИМ3 = клок периферии...   Aug 23 2012, 06:23
|- - adnega   Цитата(BlackOps @ Aug 23 2012, 10:23) мне...   Aug 23 2012, 07:08
- - BlackOps   ясно, спасибо.   Aug 23 2012, 07:13


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

 


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


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