Перейти к содержанию
    

stm32f100c4t6 Keil4.74

Здравствуйте помогите. Проект сделан через 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 мкф. меньше не запускалась программа после программирования без отлатчика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Процессор запаян на монтажке. NRST пин емкость 10 мкф. меньше не запускалась программа после программирования без отлатчика.

Я предположу походя, что где-то у Вас не затянуты правильно входы BOOT0 и BOOT1.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

BOOT1 в этом корпусе нет а BOOT0 на земле.Сейчас копаюсь в приоритетах прерываний в программе есть прерывания от tim3 может они влияют друг на друга.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я правильно понял, у вас все работает, но вас смущает, что отладчик останавливается на коде, который не исполняется? Так это нормально. Вы откройте окно дизассемблера и посмотрите, какие команды в этот момент исполняются. Наверняка это команды с условным выполнением вроде ldrbne, strbne. Отладчик чисто физически не может отличить, когда такая команда выполняет полезную работу, а когда - нет. Смотрите чаще в окно дизассемблера, многие чудеса станут понятными.

 

Добавлено: а возможно, один и тот же участок ассемблерного кода используется разными ветками вашей высокоуровневой программой. Если сделать пару шагов по дизассемблированному коду, вы попадете в ту ветку программы, которая в этот момент реально выполняется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это еще мы не говорим про то что в кейле с оптимизацией не 0, а дефолт, что на самом деле -2 вообще нельзя доверять тресингу по С коду, там полное расхождение из-за оптимизации...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...