STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь

Сообщение prinv »

[uquote="uldemir",url="/forum/viewtopic.php?p=3459672#p3459672"]Вопрос к спецам CubeMX, остальные могут выдохнуть и расслабиться. Что нужно еще сделать, чтобы таймер сконфигурённый в кубе запустился? Вот, сконфигурил его - а ничего не происходит. Зашел отладчиком - прескалер, коэффициент деления появились, а вот CEN и еще кое что, никто не взвёл.[/uquote]
HAL_TIM_Base_Start_IT
HAL_TIM_Base_Start
HAL_TIM_PWM_Start
+ ещё варианты. В зависимости что тебе от таймера надо.
Куб только конфигурирует периферию, запускаешь её сам.

На st.com вся документация по HAL есть.
Никакая контра не уйдёт от нас
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7383
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Спасиб, конечно, вот только жаль, что это я уже сам даааааааааааавно нашел. И даже, отыскал как выставить бит UDE, что по этой "документации" враз и не найдёшь.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

WiseLord писал(а):Я пока не заменил кварц и конденсаторы на правильные, вообще не мог понять, что не так с RTC - могут вообще не тикать, а берёшь плату в руку (наводки? земля?) - начинают, но с жуткой погрешностью.
А они (китайцы) и не скрывают это. Вот, нашел схему той платки.

Кстати, а на 8-МГц кварце стоят 12 пФ Не мало? Обычно же на такие кварцы ставят 22-24 пФ. Может от этого и частота 8МГц неправильная?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Не знаю. У меня на схеме (брал тут) 20пФ указаны, на обоих кварцах.

100пФ на часовом - это вообще за гранью добра и зла.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3486219#p3486219"]Не знаю. У меня на схеме (брал тут) 20пФ указаны, на обоих кварцах.[/uquote]Спасибо, очень полезный ресурс. А про резонаторы на вот этой плате что можете сказать? Ну, часовой - ясно, та же гадость, что и на F103C8T6, а вот 8 МГц? ИМХО, тоже гадость пластмассовая...

[uquote="WiseLord",url="/forum/viewtopic.php?p=3486219#p3486219"]100пФ на часовом - это вообще за гранью добра и зла.[/uquote]Помню, в конце 70-х воевал с часами на 176-й, вроде бы, генератор секунды был 176ИЕ5, так там было что-то вроде 75 пФ, причем один из конденсаторов рекомендовали подобрать (или добавить подстроечник) для получения точной частоты 32768. Еще помню, что батарейку этот ИЕ5 жрал, как свинья помои! Помогло увеличение резистора между входом и выходом генераторного инвертора до 47-68 МОм и понижение питания до 5-6 В.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Реклама
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Сообщение AlDr70 »

Здравствуйте. Прошу помощи. Пробую к main.c подключить свой файл wait.c c wait.h. Функция wait объявлена в основном цикле и не имеет связи с wait.c. Что не так у меня? Да, и еще, Keil постоянно ругается на последнюю строку. Keil 4.74.0.22 камень 103. Прилагаю файл проекта
Вложения
sys tic.rar
мигалка на сис-тике и декременте регистра
(263.88 КБ) 244 скачивания
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

AlDr70, перепутал всё что можно. Объявление, определение и вызов функции wait.

1. Определение в файле wait.c

Код: Выделить всё

void wait()
{
  // бла-бла-бла
}
2. Объявление в файле wait.h

Код: Выделить всё

extern void wait();
3. Вызов в основном цикле
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

AlDr70 писал(а):Пробую к main.c подключить свой файл wait.c c wait.h.
В первый раз на Си пишите?
В архиве проект под STM32F103C8T6 использующий системный таймер для задержки при мигании светодиодом. Проект не для кейла, а для EmBitz, но это не важно. Посмотрите как устроены файлы main.c, SysTimer.c и одноименные h файлы.

Для этого МК логичнее использовать WDT для задержек. Код даже проще получится.
Вложения
SysTimer.zip
(271.54 КБ) 198 скачиваний
Blink_WDT.7z
(81.45 КБ) 316 скачиваний
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Сообщение AlDr70 »

Да, первая попытка на С. Спасибо. А как быть с ругательством кейла на последнюю сторку?
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

В последней строке лишняя закрывающая скобка.
В коде много ошибок.
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Не понимаю я оптимизатор Кейла. С одной стороны тщательно вычищает всё, что может быть вычислено заранее, чтобы посмотреть что-то промежуточное в отладчике, приходится изголяться. С другой стороны, тот самый цикл while(1) отрабатывает буквально: достает и проверяет эту единичку, в результате F407 на 168 МГц единственный ctr2++ в этом цикле выполняет около 20 млн раз в секунду. Замена этого while(1){ctr2++;} на unfin:ctr2++;goto unfin; увеличила этот ctr2 до почти 84 млн за секунду.

И, кстати, так и не разобрался с extern: по всем докам, до которых я дотянулся, в файле с main() надо написать до всех функций, допустим, static int ctr2; в остальных надо писать extern int ctr2; и все будет ОК. Ага, два раза! Линкер ругается, что ctr2 не найдено. Где я неправ?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

afz писал(а):до всех функций, допустим, static int ctr2
Только без static.

Static переменная видна только внутри файла. Extern в файле говорит, что где-то ещё, в другом .c файле будет такая (глобальная) переменная. А глобальной-то Вы и не оставили.
Контактная информация:
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Блин, все забыл! Ведь точно знал когда-то, спасибо, что напомнили.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Сообщение AlDr70 »

Пытаюсь изучить РМ на 32F103. Там в разделе BKP registers упоминается TAMPER. Что это и для чего? Растолкуйте, пожалуйста доходчиво нубу.
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Что-то вроде "красной кнопки". Уничтожить информацию в "батарейной" памяти/затереть прошивку при несанкционированном доступе (вскрытие корпуса, и т.п.). Сильно не вникал, но что-то вроде этого.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Сообщение AlDr70 »

Спасибо, земляк.
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

А как лучше подрыгать одинокой ножкой GPIO: через GPIOx->BSRR, или через битбанг? Конечно, если дрыгать не одной ножкой, то через BSRR можно дрыгнуть сразу всеми, какими надо, а если одной?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

afz, смотря что ты вкладываешь в слово "лучше". Так что в твоём понимании лучше?
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Наверное с точки зрения скорости. Допустим, я дрыгнул одной ножкой, прочитал другие биты того же порта, которые на ввод, посмотрел реакцию, дрыгнул другой или третьей ножкой того же порта, в зависимости от... Оптимизатор может взять в регистр адрес этого BSRR и тогда все будет быстро. А может и не взять...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Ну ты же сам всё понимаешь :)

Если в двух словах, то на битбандинге можно как выиграть за счёт того что записывать надо только две константы 0 и 1 и их можно держать в регистрах, так и проиграть, из-за трудности использования записи со смещением. В целом тож на то выходит. С учётом того что битбандинг есть не во всех чипах, то заморачиваться с ним особого смысла нет.
Ответить

Вернуться в «ARM»