Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
kiksyy
0 / 0 / 0
Регистрация: 11.09.2015
Сообщений: 20
1

Непонятка с таймерами, прошу помощи (решено)

15.09.2015, 10:07. Просмотров 4526. Ответов 10
Метки нет (Все метки)

Всем привет! Прошу сильно не пинать, поскольку только начинаю разбираться.
Есть у меня плата stm32l152c-discovery чип - stm32l152rct6.
Проблема в следующем - включаю таймер TIM3, пробую его подогнать под необходимые мне значения - 20 кГц. Пытаюсь вычислить предделитель по формуле - SystemCoreClock/20000 -1, а период выставить в 1, но осциллограф показывает совсем другие частотные значения. Тактировка системы - 32 МГц (должна быть во всяком случае).
Ну думаю попробую другие варианты - переключаюсь на светодиоды для наглядности. Светодиоды выставляю на моргание на одну секунду путем опытного подбора значений предделителя и периода, работает в необходимом режиме при следующих значениях: предделитель = 2096, период = 1000.
То есть вывод - частота тактирования шины APB1 не равна SystemCoreClock. Согласно комментариям в system_stm32l1xx.c "After each divice risit the MSI (2.1 MHz Range) is used as system clock source.
* Then SystemInit() function is caltid, in "stortup_stm32l1xx_xx.s" file, to
* confikure the system clock before to branch to main program."
Согласно дебаггера запуск тактирования через SystemInit() проходит без проблем. Может кто-то объяснить почему происходит описанная ситуация, и если такое дело - то где можно взять значение тактирования шины? или оно чего-то в аварийный режим сваливается? заранее благодарен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2015, 10:07
Ответы с готовыми решениями:

Прошу помощи с DMA на STM32F4 DISCOVERY [РЕШЕНО]
Пытаюсь разобраться с DMA + TIM, не понимаю, почему DMA не запускается. Основной смысл программы -...

Прошу помощи
Есть у меня отладочная плата на которой я экспериментирую. И вот возникла идея, сделать нечто...

Начинающий, прошу помощи микроСИ
здравствуйте! помогите с кодом пожалуйста. есть контролер easypic5 pic16f877a. на языку микроСИ...

Прошу помощи по nuvoton. nuc220le3an.
Короче есть такой девайс как электронная сигарета. В ней есть арм контроллер nuc220le3an, и есть...

STM8S105K6 и Timer1 прошу помощи
Доброго всем дня. Необходимо запустить Input Capture на Timer1 CH4. Проц - STM8S105K6 Среда...

10
TomityWotf
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 553
15.09.2015, 10:27 2
SystemCoreClockUpdate() пересчитывает значение переменной SystemCoreClock исходя из текущих настроек тактирования.
Также в stm32l1xx_rcc.c из SPL есть функция RCC_GetClocksFreq(), которая позволяет получить текущие частоты всех шин.
0
Movysi
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
15.09.2015, 10:34 3
Цитата Сообщение от kiksyy
... но осциллограф показывает совсем другие частотные значения.
Я выводил на вывод МСО1 системную частоту,делённую на четыре(осциллограф больше не тянет) и так проверял.
А Вы где смотрите?
0
Movysi
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
15.09.2015, 11:21 4
Цитата Сообщение от kiksyy
Тактировка системы - 32 МГц (должна быть во всяком случае).
Ну думаю попробую другие варианты - переключаюсь на светодиоды для наглядности. Светодиоды выставляю на моргание на одну секунду путем опытного подбора значений предделителя и периода, работает в необходимом режиме при следующих значениях: предделитель = 2096, период = 1000.
After each divice risit the MSI (2.1 MHz Range) is used as system clock source.
Это значит,Вы не перешли на HSE->PLL->32МГц,а остались на этой MCI внутренней.Посмотрел в КУБЕ,действительно там есть такая в районе 2МГц.
Мне работа сразу с таймером,показалась сложной.Сначала добился,чтобы частота тактирования была такая как мне надо.Работать на внутренней,не стабильной 16Мгц(так у меня)-не захотел,впаивать кварц,пока-тоже.Убрал лишнюю перемычку и поставил другую,и настроил BYPASS от ST_LINK на 8 Мгц кварцованный.Затем,обычный BLINK LED-запустил.
0
kiksyy
0 / 0 / 0
Регистрация: 11.09.2015
Сообщений: 20
15.09.2015, 12:01 5
Цитата Сообщение от TomityWotf
SystemCoreClockUpdate() пересчитывает значение переменной SystemCoreClock исходя из текущих настроек тактирования.
Также в stm32l1xx_rcc.c из SPL есть функция RCC_GetClocksFreq(), которая позволяет получить текущие частоты всех шин.
пасибки. Точно провтыкал функцию, хоть и просматривал библиотеку на этот предмет... Ну, оно всегда так, пока не тыкнет кто-то - не увидишь даже под носом. ))
0
kiksyy
0 / 0 / 0
Регистрация: 11.09.2015
Сообщений: 20
15.09.2015, 12:05 6
Цитата Сообщение от Movysi
Цитата Сообщение от kiksyy
... но осциллограф показывает совсем другие частотные значения.
Я выводил на вывод МСО1 системную частоту,делённую на четыре(осциллограф больше не тянет) и так проверял.
А Вы где смотрите?

а я ставил прерывание на тик таймера, включал-отключал ногу gpio диода, и на этой ноге смотрел осциллограммы с разными предделителями, даже если диод светился постоянно - сигнал на ноге-то все равно был согласно запрограммированным данным. А системную частоту я никуда не выводил - пришел к выводу о том что где-то что-то пошло не так исходя из расчетных и реально получаемых результатов.
0
kiksyy
0 / 0 / 0
Регистрация: 11.09.2015
Сообщений: 20
15.09.2015, 12:10 7
Цитата Сообщение от Movysi
Цитата Сообщение от kiksyy
Тактировка системы - 32 МГц (должна быть во всяком случае).
Ну думаю попробую другие варианты - переключаюсь на светодиоды для наглядности. Светодиоды выставляю на моргание на одну секунду путем опытного подбора значений предделителя и периода, работает в необходимом режиме при следующих значениях: предделитель = 2096, период = 1000.
After each divice risit the MSI (2.1 MHz Range) is used as system clock source.
Это значит,Вы не перешли на HSE->PLL->32МГц,а остались на этой MCI внутренней.Посмотрел в КУБЕ,действительно там есть такая в районе 2МГц.
Мне работа сразу с таймером,показалась сложной.Сначала добился,чтобы частота тактирования была такая как мне надо.Работать на внутренней,не стабильной 16Мгц(так у меня)-не захотел,впаивать кварц,пока-тоже.Убрал лишнюю перемычку и поставил другую,и настроил BYPASS от ST_LINK на 8 Мгц кварцованный.Затем,обычный BLINK LED-запустил.STM32T152RC.JPG

"но нет, нет! Что-то сосало мое сердце!" (с)

понятно. не здря паранойя мучила )) буду копать еще куб. а может подскажете сразу как сгенерированные кубом стартапы в проекты CooCox вставлять, а то что-то не встречал там генерации для этой IDE. И как можно вычислить тогда в каком месте завал происходит?
0
Movysi
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
15.09.2015, 12:20 8
Цитата Сообщение от kiksyy
Цитата Сообщение от Movysi
Цитата Сообщение от kiksyy
Тактировка системы - 32 МГц (должна быть во всяком случае).
Ну думаю попробую другие варианты - переключаюсь на светодиоды для наглядности. Светодиоды выставляю на моргание на одну секунду путем опытного подбора значений предделителя и периода, работает в необходимом режиме при следующих значениях: предделитель = 2096, период = 1000.
After each divice risit the MSI (2.1 MHz Range) is used as system clock source.
Это значит,Вы не перешли на HSE->PLL->32МГц,а остались на этой MCI внутренней.Посмотрел в КУБЕ,действительно там есть такая в районе 2МГц.
Мне работа сразу с таймером,показалась сложной.Сначала добился,чтобы частота тактирования была такая как мне надо.Работать на внутренней,не стабильной 16Мгц(так у меня)-не захотел,впаивать кварц,пока-тоже.Убрал лишнюю перемычку и поставил другую,и настроил BYPASS от ST_LINK на 8 Мгц кварцованный.Затем,обычный BLINK LED-запустил.Вложение:
STM32T152RC.JPG

"но нет, нет! Что-то сосало мое сердце!" (с)

понятно. не здря паранойя мучила )) буду копать еще куб. а может подскажете сразу как сгенерированные кубом стартапы в проекты CooCox вставлять, а то что-то не встречал там генерации для этой IDE. И как можно вычислить тогда в каком месте завал происходит?

Я Кокос ставил,но не погружался.На момент старта,там не было моего процессора,поэтому,не смог начать.
Но вот эта картинка-она общая для МК,не зависимо от среды разработки.Кстати,показанное на картинке-это КУБ показывает для Вашего контроллера по умолчанию,т.е. он стартует с 2 Мгц.
Для Кокоса,наверно можно генерировать под ECLIPSE,только слышал,что в Кокосе есть особенности со стартапом.Выясните у тех,кто его юзает.
0
kiksyy
0 / 0 / 0
Регистрация: 11.09.2015
Сообщений: 20
15.09.2015, 12:41 9
Я Кокос ставил,но не погружался.На момент старта,там не было моего процессора,поэтому,не смог начать.
Но вот эта картинка-она общая для МК,не зависимо от среды разработки.Кстати,показанное на картинке-это КУБ показывает для Вашего контроллера по умолчанию,т.е. он стартует с 2 Мгц.
Для Кокоса,наверно можно генерировать под ECLIPSE,только слышал,что в Кокосе есть особенности со стартапом.Выясните у тех,кто его юзает.[/quote]

ок. буду разбираться. спасибо за ответы. а частоты просмотрел - точно на 2МГц стартует. Хух - ну понимание источника неправильности лучше неопределенности )))
0
Koryk
0 / 0 / 0
Регистрация: 18.01.2009
Сообщений: 31
16.09.2015, 09:46 10
Ближе всего к Коксу TrueSTUDIO - обе эти IDE сделаны на базе Эклипса. Я работаю в чистом Эклипсе и без осложнений использовал стартапы и скрипты линкера от проектов TrueSTUDIO. В Кубе через меню Project->Setting нужно открыть свойства проекта и в строке Toolchain/IDE выбрать TrueSTUDIO. Сгенерированные поле этого исходники будут ближе всего к Коксу. Там и файлы проекта можно наверное подшаманить и открыть в Коксе или в Эклипсе, но мне лениво было разбираться - я просто открывал файл проекта в текстовом редакторе, находил интересующие меня настройки и переносил их в свойства проекта в Эклипсе.
0
Movysi
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
16.09.2015, 12:35 11
Цитата Сообщение от KoryK
Ближе всего к Коксу TrueSTUDIO - обе эти IDE сделаны на базе Эклипса. Я работаю в чистом Эклипсе и без осложнений использовал стартапы и скрипты линкера от проектов TrueSTUDIO. В Кубе через меню Project->Setting нужно открыть свойства проекта и в строке Toolchain/IDE выбрать TrueSTUDIO. Сгенерированные поле этого исходники будут ближе всего к Коксу. Там и файлы проекта можно наверное подшаманить и открыть в Коксе или в Эклипсе, но мне лениво было разбираться - я просто открывал файл проекта в текстовом редакторе, находил интересующие меня настройки и переносил их в свойства проекта в Эклипсе.
Точно.Там не Эклипсе,а True STUDIO.И ещё сейчас добавили генерацию для другой среды System Workbench for STM32-в папке SW4STM32(она тоже на основе Эклипсе)
http://www.mostirs.com.pl/en,news,st-st ... -workbench
http://www.openstm32.org/HomePage
КУБ-проекты генерит для обеих сред,но в новых паках,примеры идут уже только для SW4STM32.
0
16.09.2015, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2015, 12:35

Stm32F4 + Ethernet. Прошу помощи
Доброго времени суток. Прошу помощи форумчан в организации соединения PC и МК (Плата:...

Прошу помощи с USB composite device
Прошу помочь с передачей данных по usb, а так же проверить проект на предмет косяков инициализации...

Не могу разобраться с отладчиком, прошу помощи.
Народ подскажите пожалуйста, второй день туплю...с библиотекой периферии RCC. Настраиваю аналог...


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

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

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