Oleg_DI 0 6 апреля, 2015 Опубликовано 6 апреля, 2015 · Жалоба Здравствуйте помогите. Проект сделан через stm32cube Keil компилировал без ошибок.Отладка запускается.Всё инициализация проходит. По прерыванию SysTik чтение I2C pca9555 9 кодов кнопок HAL_I2C_Mem_Read(&hi2c1, (uint8_t)I2C_ADDRESSio, 0, I2C_MEMADD_SIZE_8BIT, (uint8_t *)&ButtonScan,4,300); if(ButtonScan.InputR0!=0xff)ButtonPress.InputR0=ButtonScan.InputR0; if(ButtonPress.InputR0==0xdf) { HAL_I2C_Mem_Read(&hi2c1, (uint8_t)I2C_ADDRESSrtc,Addres, I2C_MEMADD_SIZE_8BIT,(uint8_t *)&TuneBlock[NumberTuner],6,300);} if(ButtonPress.InputR0==Button2) { HAL_I2C_Mem_Write(&hi2c1, (uint8_t)I2C_ADDRESSrtc,Addres, I2C_MEMADD_SIZE_8BIT,(uint8_t *)&TuneBlock[NumberTuner],6,300);} если ставить метку при отладке на первую кнопку программа останавливается на ней.хотя нет никакого равенства.при последующим пуском все кнопки работают. Процессор запаян на монтажке. NRST пин емкость 10 мкф. меньше не запускалась программа после программирования без отлатчика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба Процессор запаян на монтажке. NRST пин емкость 10 мкф. меньше не запускалась программа после программирования без отлатчика. Я предположу походя, что где-то у Вас не затянуты правильно входы BOOT0 и BOOT1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oleg_DI 0 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба BOOT1 в этом корпусе нет а BOOT0 на земле.Сейчас копаюсь в приоритетах прерываний в программе есть прерывания от tim3 может они влияют друг на друга. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба Если я правильно понял, у вас все работает, но вас смущает, что отладчик останавливается на коде, который не исполняется? Так это нормально. Вы откройте окно дизассемблера и посмотрите, какие команды в этот момент исполняются. Наверняка это команды с условным выполнением вроде ldrbne, strbne. Отладчик чисто физически не может отличить, когда такая команда выполняет полезную работу, а когда - нет. Смотрите чаще в окно дизассемблера, многие чудеса станут понятными. Добавлено: а возможно, один и тот же участок ассемблерного кода используется разными ветками вашей высокоуровневой программой. Если сделать пару шагов по дизассемблированному коду, вы попадете в ту ветку программы, которая в этот момент реально выполняется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба это еще мы не говорим про то что в кейле с оптимизацией не 0, а дефолт, что на самом деле -2 вообще нельзя доверять тресингу по С коду, там полное расхождение из-за оптимизации... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться