Да, я посмотрел апнот и понял что для обычной F серии надо подать ЦАП на АЦП для калибровки и сделать ее руками. Похоже что это для L серии они обновили архитектуру и там это происходит автоматом одной халовской функцией. Решали одну проблему многими способами, т-к точно не знали в чем причина. Убрали буффер и нагрузочные резисторы (у нас внешний буффер). Вроде как ошибка установки +5 мВ. Пока устраивает.
STM32 новичку в ARM что к чему
[uquote="pavell",url="/forum/viewtopic.php?p=3886441#p3886441"]По ЦАП есть отдельный апнот 4566 для всего семейства контроллеров, его посмотрите.[/uquote]
Да, я посмотрел апнот и понял что для обычной F серии надо подать ЦАП на АЦП для калибровки и сделать ее руками. Похоже что это для L серии они обновили архитектуру и там это происходит автоматом одной халовской функцией. Решали одну проблему многими способами, т-к точно не знали в чем причина. Убрали буффер и нагрузочные резисторы (у нас внешний буффер). Вроде как ошибка установки +5 мВ. Пока устраивает.
Да, я посмотрел апнот и понял что для обычной F серии надо подать ЦАП на АЦП для калибровки и сделать ее руками. Похоже что это для L серии они обновили архитектуру и там это происходит автоматом одной халовской функцией. Решали одну проблему многими способами, т-к точно не знали в чем причина. Убрали буффер и нагрузочные резисторы (у нас внешний буффер). Вроде как ошибка установки +5 мВ. Пока устраивает.
- Реклама
- Сообщения: 156
- Зарегистрирован: Вс сен 06, 2020 16:06:10
А правильно я понял что в F1xx для получения клока на MCO надо его как AFIO push-pull настроить, чтобы MCO мог пином вместо GPIO рулить?
микроконтроллер stm32f030f4 развел устройство управляет 2 мя реле и дисплейчиком 0802. температуру выводит. у меня такая проблема программа в каил написана из него прошиваю контролер по SWD. потом отредактировав программу заливаю второй раз а она не коннектится... подключаюсь по uart делаю сброс тогда опять видит, и могу опять прошить. уже 3шт перепаял блин.... отладка по swd не включена порты заняты все!
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
do-vitas писал(а):прошиваю контролер по SWD. потом отредактировав программу заливаю второй раз а она не коннектится
Тогда почему удивляетесь что не прошивается.do-vitas писал(а):отладка по swd не включена порты заняты все
Вы сами отключили выводы отладки. Теперь шейте по SWD с зажатым сбросом или переведя в режим загрузчика.
- Сообщения: 191
- Зарегистрирован: Вт июн 05, 2018 00:18:01
[uquote="Мурик",url="/forum/viewtopic.php?p=3891542#p3891542"]Тогда почему удивляетесь что не прошивается.
Вы сами отключили выводы отладки. Теперь шейте по SWD с зажатым сбросом или переведя в режим загрузчика.
[/uquote]
Поэтому я на разъем для swd всегда вывожу reset
.
Вы сами отключили выводы отладки. Теперь шейте по SWD с зажатым сбросом или переведя в режим загрузчика.
Поэтому я на разъем для swd всегда вывожу reset
- Реклама
pvit, через ресет не вышло! по крайней мере STM32CubeProgrammer! другой не пробовал! а вот режиме бут и через swd прошил спс всем все настроил!
- Сообщения: 191
- Зарегистрирован: Вт июн 05, 2018 00:18:01
Странно. Мне помогало кода в кубе swd отключил в настройках по ошибке.
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
Есть потенциометр, с которого я считываю значения. Это значение я записываю в регистр ARR таймера. В таймер переключает светодиод с вкл на выкл, чисто для индикации работы.
В коде(в основном цикле while) это выглядит вот так:
Как правильно сделать обновление регистра ARR таймера? Иногда происходят зависания таймера, в терминале я вижу обновления данных АЦП, но таймер не подает жизни, зависает в положении либо светодиод вкл, либо выкл.
В коде(в основном цикле while) это выглядит вот так:
Код: Выделить всё
__disable_irq();
uint16_t data = ADC1_Get_Data();
TIM16->CR1 &= ~TIM_CR1_CEN; //выкл таймер
TIM16->ARR = data + 100; // обновляем регистр
TIM16->CR1 |= TIM_CR1_CEN; // запускаем таймер
USART1_send_STR_INT("data: ", data + 100);
__enable_irq();
delay_ms(10000000);- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
бит CEN - это не вкл/выкл таймера, это вкл/выкл внутр. тактирования счетчика таймера, поэтому он ни с регистрами ни со счетчиками ничего не делает.
обновление теневых регистров провоцирует другой бит. или событие переполнения.
Вам бы RM на свой камень посмотреть, там все в картинках.
обновление теневых регистров провоцирует другой бит. или событие переполнения.
Вам бы RM на свой камень посмотреть, там все в картинках.
Всем привет. )
Примерно полтора года назад я умудрился на БлюПилл (103) инициализировать МК, настроить RTC и по его прерываниям раз в секунду выводить в порт двоичное значение на линейку из 8 светодиодов. Получилось что-то в виде двоичного секундомера.
Теперь смотрю в код и вообще ничего не понимаю.
Делал все на CMSIS. Даже комментарии писал. Читал рефренс мануал. И как и следовало ожидать, все забыл...
Хочу продолжить изучать МК. Именно с применением CMSIS. Все настройки регистров.
Пните пожалуйста в нужном направлении. Как освежить в памяти то, что изучал. Кто понятнее всего объясняет про эту библиотеку? Никакого куба не использую. Чисто на Кейл. Применяю простой программатор СТ-Линк2.
З.Ы. Я никуда не тороплюсь. Лучше маленькими порциями и медленно изучать, чем все и сразу.
Конечная цель на данный момент: подключить к БлюПилл ленту на ВС2812, реализовать интерфейс для них и выкидывать в него по средствам ДМА массив данных.
Примерно полтора года назад я умудрился на БлюПилл (103) инициализировать МК, настроить RTC и по его прерываниям раз в секунду выводить в порт двоичное значение на линейку из 8 светодиодов. Получилось что-то в виде двоичного секундомера.
Теперь смотрю в код и вообще ничего не понимаю.
Делал все на CMSIS. Даже комментарии писал. Читал рефренс мануал. И как и следовало ожидать, все забыл...
Хочу продолжить изучать МК. Именно с применением CMSIS. Все настройки регистров.
Пните пожалуйста в нужном направлении. Как освежить в памяти то, что изучал. Кто понятнее всего объясняет про эту библиотеку? Никакого куба не использую. Чисто на Кейл. Применяю простой программатор СТ-Линк2.
З.Ы. Я никуда не тороплюсь. Лучше маленькими порциями и медленно изучать, чем все и сразу.
Конечная цель на данный момент: подключить к БлюПилл ленту на ВС2812, реализовать интерфейс для них и выкидывать в него по средствам ДМА массив данных.
Последний раз редактировалось СКАЗОЧНИК Пн сен 14, 2020 13:10:02, всего редактировалось 1 раз.
Станислав
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Вот поэтому лучше писать используя SPL или в крайнем случае HAL.СКАЗОЧНИК писал(а):Теперь смотрю в код и вообще ничего не понимаю.
Через время код лучше читается и его проще переносить на другие МК.
- Сообщения: 6513
- Зарегистрирован: Сб янв 28, 2006 22:47:24
[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3892425#p3892425"]
И все?
Этот есть у меня.. Неужели все так просто?[/uquote]
Если упрощенно, то CMSIS всего лишь список регистров микроконтроллера и битов в них с названиями, для обращения к этим самым регистра и битам по именам определенным в подключаемых файлах. Для STM32F303CB это файл stm32f303xc.h. Оформлено в виде структур, обращаясь к элементам которых можно настраивать регистры по своему желанию.
Ничего особенного в этом нет, собстна. В средах программирования для PIC или AVR тоже никто не пишет адреса регистров в шешнадцатеричных кодах для обращения к ним.
Плохо то, что названия регистров в файлах CMSIS не всегда совпадают с названиями из RM.
Этот есть у меня.. Неужели все так просто?[/uquote]
Если упрощенно, то CMSIS всего лишь список регистров микроконтроллера и битов в них с названиями, для обращения к этим самым регистра и битам по именам определенным в подключаемых файлах. Для STM32F303CB это файл stm32f303xc.h. Оформлено в виде структур, обращаясь к элементам которых можно настраивать регистры по своему желанию.
Ничего особенного в этом нет, собстна. В средах программирования для PIC или AVR тоже никто не пишет адреса регистров в шешнадцатеричных кодах для обращения к ним.
Плохо то, что названия регистров в файлах CMSIS не всегда совпадают с названиями из RM.
Астролябия-сама меряет, было бы что мерять!!!
Ага, я вспомнил про этот файл. Уже пролистал его. Спасибо. ) Из него и брал все в соответствии с РМ. Может и не совпадают, но мне пока не мешает такое.
Добавлено after 8 hours 21 minute 15 seconds:
Я понял и вспомнил, что Систик таймер не описан в РМ (на Ф103) тогда, когда не нашел про него даже в содержании... Он общий для всех семейств кортексов. Не могу вспомнить, где про него читал. Где его регистры описаны?
Добавлено after 8 hours 21 minute 15 seconds:
Я понял и вспомнил, что Систик таймер не описан в РМ (на Ф103) тогда, когда не нашел про него даже в содержании... Он общий для всех семейств кортексов. Не могу вспомнить, где про него читал. Где его регистры описаны?
Станислав
Я тоже недавно начал изучать stm создаю проект в кубе потом открываю в кейле, там уже все библиотеки есть открываешь их и читаешь какие функции как работают, какие переменные передают! последнее время если использую библиотеку LL это некий компромис между высоким и низким уровнями!


