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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте.

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

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

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

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

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

Буду благодарен за хорошие советы и ответы))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2014, 20:05
Ответы с готовыми решениями:

Настройка работы таймера stm32f4 discovery
Настраивается таймер: TIM_TimeBaseInitTypeDef base_timer; TIM_TimeBaseStructInit(&base_timer); base_timer.TIM_Pressotir =...

Pinboard II & STM32VL-DISCOVERY
Как запрограммировать модуль STM32 на Pinboard II c использованием программатора STM32VL-DISCOVERY? Напишите поподробнее(какие перемычки...

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

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

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

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

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

Code
1
uint16_t LCDContrast = 300;
Запустили порт.
Code
1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |  RCC_APB2Periph_AFIO, ENABLE);
Настроили ногу.
Code
1
2
3
4
5
6
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.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 ноги.

Code
1
2
uint16_t Motor2Speed = 0;
uint16_t Motor4Speed = 0;
Код:RCC_APB2PeriphClockCmd(RCC_APB2Perip h_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_TI M3, 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2014, 22:39
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru