Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
1

STM32VL Discovery настройка таймера

01.10.2014, 20:05. Просмотров 2829. Ответов 4
Метки нет (Все метки)


Здравствуйте.

Пытаюсь на[м]учиться нормально работать с учебной платкой STM32VL Dyscovery. Пока более менее нормально подружился только с GPIO. Сейчас тружусь с таймерами. Посему несколько вопросов.

1. Есть ли какая то стандартная последовательность работы с таймером?

Ну то есть... в одних проектах указывают какие то предделители, что-то еще, в других - по другому все. В одних используют SPL, в других - нет, в третьих - на половину))) Может можно составить что-то типа:
- подали тактовый импульс
- указали режим, обязательные настройки (есть ли они вообще?)
- указали обработчик
- радуемся

2. Настроил таймер на режим ШИМ, подключил светодиод, а он просто горит... Если настроил ШИМ, ведь диод должен менять яркость? Или мне для этого самому надо руками менять длину импульса? Если да, то чем тогда хорош режим ШИМ, ведь я обычным циклом так могу делать)

ПС. многие говорят, что SPL для начинающих - зло. Но без него совсем понять не получается, поэтому стараюсь работать с ним)

Буду благодарен за хорошие советы и ответы))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2014, 20:05
Ответы с готовыми решениями:

Настройка работы таймера stm32f4 discovery
Настраивается таймер: TIM_TimeBaseInitTypeDef base_timer;...

bmp085+stm32vl discovery
Добрый вечер. Хочу прикрутить датчик давления bmp085 к stm32vl discovery. I2c использую...

STM32VL-DiSCOVERY Аппаратная проблема?
Народ, померяйте напругу на PB4. У меня там постоянно +3V. Это так и должно быть, или трындец...

ST-Link не шьет stm32vl discovery
Хочу прошить микроконтроллер на stm32vl discovery через ST-Link v2. Я знаю, что можно шить по USB,...

4
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 97
01.10.2014, 20:11 2
1. Читаем ReferenceManual и радуемся)
2. Вопрос из разряда зачем трактором вспахивать поле если лопатой можно сделать тоже самое)
0
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
01.10.2014, 20:40 3
Цитата Сообщение от KotyoMor
1. Читаем ReferenceManual и радуемся)
2. Вопрос из разряда зачем трактором вспахивать поле если лопатой можно сделать тоже самое)
Так проблема в том, что в РМ нет такой последовательности)) Там просто описано, какой регистр что делает и зачем он нужен) Да и тяжко его читать, ибо английский знаю только по опыту чтения мануалов (в школе немецкий был).

Понятно, что надо такт подать... А вот дальше?))) Указать частоту срабатывания? А потом обработчик указать?)

Кстати еще вопрос - а что такое каналы у таймеров? Это типа один таймер на несколько ног одновременно может работать?
0
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 97
01.10.2014, 22:26 4
Настройка последовательности регистров значения не имеет обычно, главное подать перед настройкой тактирование и после настройки запустить битом ENABLE. Прерывания настраивать можно сразу или отдельно. Ну обычно с МК идет куча примеров практически на все....+ есть гугл там тоже куча примеров...
0
0 / 0 / 0
Регистрация: 27.03.2011
Сообщений: 127
02.10.2014, 22:39 5
SPL лучше всякого Reference Manual-a. Кратко и на примере изложены основные моменты работы с периферией. Использовать SPL не обязательно, но изучение облегчает жизнь новичка. Опять же, куча примеров. Ни гугла, ни RM не надо.

По поводу ШИМ. Порт B, нога 6.

Код
uint16_t LCDContrast = 300;
Запустили порт.
Код
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |  RCC_APB2Periph_AFIO, ENABLE);
Настроили ногу.
Код
GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
Настроили TIM.
Код
TIM_TimeBaseInitTypeDef  TIM4_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

TIM4_TimeBaseStructure.TIM_Period = 665;
TIM4_TimeBaseStructure.TIM_Pressotir = ((uint16_t) ((SystemCoreClock / 24000000) - 1));
TIM4_TimeBaseStructure.TIM_ClockDyvysyom = 0;
TIM4_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM4, &TIM4_TimeBaseStructure);

TIM4_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM4_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM4_OCInitStructure.TIM_Pulse = LCDContrast;
TIM4_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC4Init(TIM4, &TIM4_OCInitStructure);

TIM_OC4PretoodConfig(TIM4, TIM_OCPretood_Enable);

TIM_ARRPretoodConfig(TIM4, ENABLE);

TIM_Cmd(TIM4, ENABLE);
Тоже самое на 2 ноги.

Код
uint16_t Motor2Speed = 0;
uint16_t Motor4Speed = 0;
Код:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);

Код:GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

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

Код:TIM_TimeBaseInitTypeDef TIM3_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

TIM3_TimeBaseStructure.TIM_Period = 665;
TIM3_TimeBaseStructure.TIM_Pressotir = ((uint16_t) ((SystemCoreClock / 24000000) - 1));
TIM3_TimeBaseStructure.TIM_ClockDyvysyom = 0;
TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM3, &TIM3_TimeBaseStructure);

TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM3_OCInitStructure.TIM_Pulse = Motor2Speed;
TIM_OC2Init(TIM3, &TIM3_OCInitStructure);
TIM_OC2PretoodConfig(TIM3, TIM_OCPretood_Enable);

TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM3_OCInitStructure.TIM_Pulse = Motor4Speed;
TIM_OC4Init(TIM3, &TIM3_OCInitStructure);
TIM_OC4PretoodConfig(TIM3, TIM_OCPretood_Enable);

TIM_ARRPretoodConfig(TIM3, ENABLE);

TIM_Cmd(TIM3, ENABLE);

Все просто. Без гугла, без RM, только примеры из пакета SPL
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2014, 22:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Начало работы stm32vl-discovery
Добрый день! Помогите разобраться в программировании контроллера! Чужая программа, все работает,...

Комп не видит stm32vl-discovery
Краткая история. Отдали stm32vldiscovery со словами "комп ее не видит после попытки прошить туда...

TFT 320x240 + STM32VL Discovery
Доброго времени суток. Пытаюсь запустить вот такой дисплей: <Изображение удалено>...

Можно ли запрограмить stm32f0 с помощью stm32vl discovery?
Имеется stm32vl discovery отладочная плата. Планирую собрать девайсину в мелкой серии, больше...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.