a-styuf 0 4 января, 2017 Опубликовано 4 января, 2017 (изменено) · Жалоба Добрый день, товарищи! Возникла у меня такая проблема: появилась необходимость запрограммировать STM32F373 в наборе с разной периферией. В качестве программатара использую stm32l-discovery. В качестве среды - keil 5. Проект собрал, в качестве тестовой програмки решил помигать светодиодом на плате (PA1). Получился вот такой код: #include "stm32f37x.h" int i=0; int main(void) { GPIO_InitTypeDef GPIO_IS; /* GPIOD Periph clock enable */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); GPIO_IS.GPIO_Pin = GPIO_Pin_All; GPIO_IS.GPIO_Mode = GPIO_Mode_OUT; GPIO_IS.GPIO_Speed = GPIO_Speed_2MHz; GPIO_IS.GPIO_OType = GPIO_OType_PP; GPIO_IS.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_IS); while(1) { GPIO_Write(GPIOA, 0xFF); while(i<100000) i++; i=0; GPIO_Write(GPIOA, 0xFF); while(i<100000) i++; i=0; } } #include "stm32f37x.h" Сразу оговорюсь, не осознал прблему и затер старый код, так что возможно использовался порт B. Сам код эффекта не имеет (ибо при переходе по внутренним while-ам состояние не меняется). Далее, я попытался прошиться из под keil через SW. Плата увиделась, прошивка прошла. А тут и началась беда. больше плата не распознавалась, понять почему, а тем более исправить, я не смог. Попробовал стандартуную утилиту к ST-LINK - эффект тот-же: скорее всего исключил проблему с keil. Попробовал вернуть программатар на МК discovery - работает: вроде как исключил проблемы с программатором. Не пробовал: подключить кроме ног SWDIO и SWCLK еще ногу ресета. Завтра попробую, но очент=ь сложно - она никак не разведена на плате( В голове созрел такой вариант: раз ноги SWDIO и SWCLK сопряжены с шиной порта A, я снял с них функцию отладочных входов/выходов. Больше вариантов я не придумал, разве что МК погорел (чур меня). Надеюсь на вашу мудрость и понимание вороса . Изменено 4 января, 2017 пользователем styuf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amiller 2 4 января, 2017 Опубликовано 4 января, 2017 · Жалоба Вообще то я не силен в CMSIS, не приходилось использовать. Но вроде как инициализируете порт F, а пишите в А, нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 4 января, 2017 Опубликовано 4 января, 2017 · Жалоба Поправил! Спасибо, что указали на ошибку. Как я уже сказал, код я старый затер, но точно помню, что все порты были в соответствии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amiller 2 4 января, 2017 Опубликовано 4 января, 2017 · Жалоба Тогда и далее в цикле: Вы в обоих случаях пишите 0xFF, что не приводит к изменению состояния выходов. Похоже код не имеет отношения к проблеме, если она вообще существует... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 4 января, 2017 Опубликовано 4 января, 2017 (изменено) · Жалоба Код действительно не имеет смысла, о чем я и говорил в топике. Он был создан с единственной целью - прошить что-то в МК. опять же с другой стороны данный код не должен мешать последующей прошивке. Но проблема на лицо: первый раз проект залился в МК, после чего МК перестал определяться средствами прошивки и отладки. И понимаю ваш скепсис по поводу проблемы. Проблема не с кодом, который не претендует на что-то правильное и работающее. Проблема вот с чем: мог ли я програмно обрезать себе функцию отладки и прошивки через порт SW, и если да, то как это исправить. Изменено 4 января, 2017 пользователем styuf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amiller 2 4 января, 2017 Опубликовано 4 января, 2017 (изменено) · Жалоба Значит я неправильно прочитал Ваше письмо. Видимо проблема в том, что Вы задействовали _все_ выводы порта А, в том числе и интерфейса SWD. Хотя чтобы отменить функционал SWD, надо вроде Remap ног делать. Тем не менее ST-LINK Utility умеет прошивать в разных режимах. Вероятно Вам поможет опция "Under Reset", или что-то в этом духе. Чтобы прошивка ничего не успела сделать с ногами. Изменено 4 января, 2017 пользователем amiller Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 4 января, 2017 Опубликовано 4 января, 2017 (изменено) · Жалоба Попробовал сейчас снизить частоту для ST-LINK до 100 кГц. Не подключился. Перепробовал все комбинации режимов и ресетов - тоже самое. Не пробовал еще подключить кроме ног SWDIO и SWCLK еще ногу ресета. Завтра попробую, но очень сложно - она никак не разведена на плате( Изменено 5 января, 2017 пользователем styuf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 5 января, 2017 Опубликовано 5 января, 2017 · Жалоба Проблема решилась добавкой ресета к SWD шине. Как правильно говорил amiller, если перезагрузить МК, то порт А не успеет проинициализироваться и прошиться удастся. Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 5 января, 2017 Опубликовано 5 января, 2017 · Жалоба Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так.Вы просто когда будете перенастраивать порт А, настраивайте PA14, PA15 в режим SWD. Или просто не трогайте, если ваша библиотека такое позволяет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Baranov 1 5 января, 2017 Опубликовано 5 января, 2017 · Жалоба Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так. А почему нельзя жить дальше с добавленным ресетом, не думая ни о каких портах? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a-styuf 0 6 января, 2017 Опубликовано 6 января, 2017 (изменено) · Жалоба А почему нельзя жить дальше с добавленным ресетом, не думая ни о каких портах? Проблема вот в чем: плата уже используется по целевому назначению, никто переразводить её не будет ради добавления шины ресет от МК до порта SWD. А с напаянным к ножке МК проводком плату ни заказчику не покажешь, не на испытания не поставишь. Во и приходится изгаляться( Изменено 6 января, 2017 пользователем styuf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться