fpga_student
Свой-
Постов
302 -
Зарегистрирован
-
Посещение
Весь контент fpga_student
-
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
Давайте всеже завершим правильными регэкспами тему, что началась с регэкспов неправильных. Правильные regexp-ы для PowerGrip. Который оказался абсолютный чемпион в этом деле. \)\s*[\n\r]+\s*\{\s*[\n\r]+ ){\n do\s*[\n\r]+\s*\{\s*[\n\r]+ do{\n else\s*[\n\r]+\s*\{\s*[\n\r]+ else{\n \"C\"\s*[\n\r]+\s*\{\s*[\n\r]+ "C"{\n enum\s*[\n\r]+\s*\{\s*[\n\r]+ enum{\n struct\s*[\n\r]+\s*\{\s*[\n\r]+ struct{\n union\s*[\n\r]+\s*\{\s*[\n\r]+ union{\n \=\s*[\n\r]+\s*\{\s*[\n\r]+ = {\n PROTOTYPE\s*[\n\r]+\s*\{\s*[\n\r]+ PROTOTYPE {\n Этот набор регэкспов переводит в cтиль «K&R» любое форматирование с вынесенной на следующую строку открывающей скобкой. -
USART упал с неправильных регэкспов в неправильном туле. Завершение истории - правильные регэкспы в правильном туле.
-
Да, таки дожал PowerGrep - он самый крутой. Фантастическая скорость работы, раз в 10 быстрее ближайшего конкурента. Погрипано этим набором регэкспов 500 метров сорцов на самом отстойном ноуте чуть не 2 ядра 1.5ГГц за 10 минут. Единственный тул что может отработать без ошибок регэкспы на несколько строк. \)\s*[\n\r]+\s*\{\s*[\n\r]+ ){\n do\s*[\n\r]+\s*\{\s*[\n\r]+ do{\n else\s*[\n\r]+\s*\{\s*[\n\r]+ else{\n \"C\"\s*[\n\r]+\s*\{\s*[\n\r]+ "C"{\n enum\s*[\n\r]+\s*\{\s*[\n\r]+ enum{\n struct\s*[\n\r]+\s*\{\s*[\n\r]+ struct{\n union\s*[\n\r]+\s*\{\s*[\n\r]+ union{\n \=\s*[\n\r]+\s*\{\s*[\n\r]+ = {\n PROTOTYPE\s*[\n\r]+\s*\{\s*[\n\r]+ PROTOTYPE {\n
-
Еще двое суток ужасных мучений и наконец-то удалось подобрать программу и регэкспы которые худо-бедно работают. Походу все что работает с регэкспами донельзя глюкавое в многострочных выражениях. Единственное кого недожал - PowerGrep - уж больно у него странный интерфейс(( хотя возможно он лучший из всех) Итоговые замены делает Multiple Search and Replace v.6.9. Тот же самый набор регэкспов в AdvanceFind&Replace 9.0 периодически недочищает символы перевода строки. Этот набор регэкспов переводит в рациональный "классический K&R" стиль любой другой с торчащей открывающей скобкой: \)\s*[\n\r]+\s*\{[\n\r]+ ){\n do\s*[\n\r]+\s*\{[\n\r]+ do{\n else\s*[\n\r]+\s*\{[\n\r]+ else{\n \"C\"\s*[\n\r]+\s*\{[\n\r]+ "C"{\n enum\s*[\n\r]+\s*\{[\n\r]+ enum{\n struct\s*[\n\r]+\s*\{[\n\r]+ struct{\n union\s*[\n\r]+\s*\{[\n\r]+ union{\n \=\s*[\n\r]+\s*\{[\n\r]+ = {\n PROTOTYPE\s*[\n\r]+\s*\{[\n\r]+ PROTOTYPE {\n зы. Периодически ОНО оставляет пробел, вопреки всему(( Те получается ) {, вместо ){. Мне уже болт, главное текст занимает минимум по высоте места, кому охота приключений может дотанцевать сам. Попытаться)
-
в файнридере это делается в 2 кнопки)) но потом еще нужно вычистить мусор. Ну и причесать
-
Да уже. Мне казалось гдето видел готовое красивое
-
Наткнулся после того как начали обсуждать
-
Подскажите где взять нормальные xls с pinout для STM32
fpga_student опубликовал тема в STM
Хочу чтобы был человеческий файл, как у китайцев, типа как в аттач. Чтобы было видно где ремап нужно делать. AT32F403A_pinout_all.ods Хочу не кубохал -
В том что эта версия неверна
-
Они сам язык еще написали) Там видно, что тот кто писал hal, тупо снес условный оператор(видимо в 403a условие не нужно проверять в отличие от 415), и половину ветвления, а операторные скобки оставил на месте
-
Если верить Хабру, то поклонниками рационального стиля были Керниган и Ричи. Интересно они тоже были писарями ?) Файл system_at32f415.c : case CRM_SCLK_PLL: pll_clock_source = CRM->cfg_bit.pllrcs; if(CRM->pll_bit.pllcfgen == FALSE){ /* get multiplication factor */ pll_mult = CRM->cfg_bit.pllmult_l; pll_mult_h = CRM->cfg_bit.pllmult_h; /* process high bits */ if((pll_mult_h != 0U) || (pll_mult == 15U)){ pll_mult += ((16U * pll_mult_h) + 1U); } else{ pll_mult += 2U; } if (pll_clock_source == 0x00){ /* hick divided by 2 selected as pll clock entry */ system_core_clock = (HICK_VALUE >> 1) * pll_mult; } else{ /* hext selected as pll clock entry */ if (CRM->cfg_bit.pllhextdiv != RESET){ /* hext clock divided by 2 */ system_core_clock = (HEXT_VALUE / 2) * pll_mult; } else{ system_core_clock = HEXT_VALUE * pll_mult; } } } else{ pll_ms = CRM->pll_bit.pllms; pll_ns = CRM->pll_bit.pllns; pll_fr = CRM->pll_bit.pllfr; if (pll_clock_source == 0x00){ /* hick divided by 2 selected as pll clock entry */ pllrcsfreq = (HICK_VALUE >> 1); } else{ /* hext selected as pll clock entry */ if (CRM->cfg_bit.pllhextdiv != RESET){ /* hext clock divided by 2 */ pllrcsfreq = (HEXT_VALUE / 2); } else{ pllrcsfreq = HEXT_VALUE; } } system_core_clock = (uint32_t)(((uint64_t)pllrcsfreq * pll_ns) / (pll_ms * (0x1 << pll_fr))); } break;
-
несильно понятно где может возникнуть такая потребность. Тем более что код в основном плюсовой, те капсуляция в обьектах должна быть. Это другое с case проблем не будет. От обезьяны с гранатой нет спасенья, в коде идиота можно и без rename-ов подорваться. Вот кстати опять наткнулся. Интересно бы понять в чем здесь сакральный смысл скобок. Файл system_at32f403a_407.c case CRM_SCLK_PLL: pll_clock_source = CRM->cfg_bit.pllrcs; { /* get multiplication factor */ pll_mult = CRM->cfg_bit.pllmult_l; pll_mult_h = CRM->cfg_bit.pllmult_h; /* process high bits */ if((pll_mult_h != 0U) || (pll_mult == 15U)){ pll_mult += ((16U * pll_mult_h) + 1U); } else{ pll_mult += 2U; } if (pll_clock_source == 0x00){ /* hick divided by 2 selected as pll clock entry */ system_core_clock = (HICK_VALUE >> 1) * pll_mult; } else{ /* hext selected as pll clock entry */ if (CRM->cfg_bit.pllhextdiv != RESET){ hext_prediv = CRM->misc3_bit.hextdiv; /* hext clock divided by 2 */ system_core_clock = (HEXT_VALUE / (hext_prediv + 2)) * pll_mult; } else{ system_core_clock = HEXT_VALUE * pll_mult; } } } break;
-
Поставил Advanced Find and Replace, видно из анализа больших исходников действительно могут возникнуть при правке проблемы. Но для того чтобы они случились код должен быть написан весьма криво. Например вот такой кусок сломается: //if () { ..... } Уже видел в одном месте, странную конструкцию, где были открывающие и закрывающие скобки, а самого оператора (if или while или do) не было вообще. Радость только в том что в такой ситуации код сломается с ошибкой. Регулярка уже такая \)\s*\r\n\s*{\s*\r\n на ){\n
-
Не это не ко мне, а к Artery. "While" - это из их Firmware_Library) Но такто Artery не единственные, кто грешит "While". Ими вообще ВСЕ грешат, начиная с Ритчи) Абсолютно согласен. Такое ощущение что некоторые граждане пытаются нагнать обьем кода в страницах, забивая все пробелами, скобками, переносами и любой возможной не относящейся к делу хренью
-
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
уже работает и так, но спасибо за интересную ссылку -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
Я думаю это зависит от головы( Я не могу патч себе на башку поставить, поэтому у меня должно быть так как я написал( Тогда читаю текст программ чужих легко, иначе не могу(( Честно, не буду так глубоко рыть в природу глюка. Сделал сегодня следующее. Отладил регеэкспы для notepad++ и прошел исходники снова ими, контролируя финальный hex проекта, и дополнительно функционал 5 UART-ов (1,2,3,6,8), последовательно патча всю либу подменами: 1. \)\s*\r\n\s*{ или \)\s*\n\s*{ на \){ -успех 2. do\s*\r\n\s*{ на do{ -успех 3. else\s*\r\n\s*{ на else{ -успех После всех правок .hex проекта и функционал UART-ов остались неизменными. Как ни странно регэкспы while\s*\r\n\s*{ - маска не найдена file\s*\r\n\s*{ на else{ - маска не найдена в AT32F403A_407_Firmware_Library_V2.1.4 и AT32F403A_407_Firmware_Library_V2.1.6 ничего не нашли. Ну и хрен с ними( -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
Вы как всегда правы(( Сделал я следующее. У меня есть пунктик, связанный с синтаксисом. Я не могу видеть в коде такое: if(*pbuffer1 != *pbuffer2) { return 0; } А мне нужно чтобы оно было такое: if(*pbuffer1 != *pbuffer2){ return 0; } Типа плотность кода на экране так выше( В определенный момент как раз накануне UARTa, я решил наконец-то навести полный порядок, и натравил на все исходники любимый notepad++, которым сделал примерно 5000 замен скобок. Потом вошел во вкус, и сделал тоже самое со скобками в операторах file do else while. И если первое преобразование прокатило - я его и до этого многократно делал, то после второго рухнул CMSIS. Он продолжал собираться, но молча перестал работать. Я этот момент толком не отловил. Потом, в процессе мучений и ковыряний попортил еще и файлы конфигов проектов. Дабы, как правильно сказал JCXZ не сделано нормальное древо проекта и бакапы были неполные(( Спасибо уважаемые простите за беспокойство( -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
Везет( Я щаз залил ногодрыг во вторую плату. все пины дрыбают нормально в портах 1-3. USART1 не работает(( Остальное вангую тоже( Причем я вдруг понял что вообще весь cmsis обновлением библиотеки заменил на 1.6 с 1.4. Откатил щаз его обратно на 1.4. Толку 0. Какой у вас проц ? У меня 403а -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
код-то родной пример от Artery код исполняется вот такой while(1){ while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET); usart_data_transmit(USART1, USART1_tx_buffer[1]); //while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET); //usart_data_transmit(USART1, USART1_tx_buffer[USART1_TX_BUFFER_SIZE-data_count]); //while(usart_flag_get(USART3, USART_RDBF_FLAG) == RESET); //usart3_rx_buffer[USART1_TX_BUFFER_SIZE-data_count] = usart_data_receive(USART3); //data_count--; } под отладчиком. По шагам. Можно смотреть в ассемблере как все дрыбает. Можно в кейле. Можно в иаре. Осцилл есно -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
Согласен( 15 лет пока сидел в конторе не писал( разучился(( Нету культуры( Очень благодарен что няньчитесь. Нашел порт рабочий Ардуины на артери и стм. Доки Плата Тесты на любой ногодрыг собираются в Keil за 30 секунд. Божественно там сделан хал внутри. И ардуиновская экосистема с JTAG на армах Мда вторую плату полностью сбросил на ней не работает ни один UART(( -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
ща буду запускать да я знаю что эта работа на 10 минут, а я сижу маюсь уже четвертый день -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
Там есть один ньюанс. Я унаследовал дурацкую структуру директорий AT32F403A_407_Firmware_Library и кажется есть пара файлов что не в бакапе. Это board.c и board.h. Как раз так неудачно вышло что между рабочими бакапами и сегодня произошла смена либы с 1.4 на 1.6, и также я поправил имя головной папки (что уж никак влиять не должно). Я сейчас сравнил старые новые файлы, в старых было несколько директив про компиляторы, в 1.6 эти директивы выпилили. На всякий случай вернул старые файлы - поведение не изменилось в одной из плат да да на 2. разные платы, процы думаю с одной закупки. Сейчас работает из 3 первых портов порт 2 без ремаппинга. Порт 3 без ремаппинга не работал ни разу. Порт 1 работал раньше во всех конфигах, но сдох. -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
теорию эту я проходил 30 лет назад, практика не работает( прерывания не используются, все флаги ожидания в заводских демках -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
Бакап могу щаз развернуть любой, есно все есть. Ни в одном ни один uart не работает( -
Artery USART перестали работать
fpga_student ответил fpga_student тема в ARM
Да собрал как GPIO пины USART TX(1,2,3) работают. Я тещу только передачу, дабы просто ткнуть осцилл. На всех разом портах исчезло, ни один порт из 8 не могу запустить, хотя работало раньше в моих же в тестах 3 штуки одновременно.