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

Stm32L Discovery Режим Отладки


Azur

Рекомендуемые сообщения

Здравствуйте, есть простенькая программка моргания светодиодом. Работает. Хотел посмотреть как работает программа. Вошел в режим отладки и начал пошагово выполнять программу. Включение/выключение светодиода происходит в подпрограмме прерывания таймера. В режиме отладки программа туда никогда не попадает... Не могу понять почему... :(

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Дошагал. Флаг прерывания сработал, а в подпрограмму все равно не перешел.... В том то и дело..., хотя сама программа рабочая... Что то с отладкой не так...

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

CooCox IDE v1.7.6

Код:

#include "stm32l1xx.h"
void TIM7_IRQHandler(void);
uint8_t i = 0;
// - частота по дефолту 2.097 MHz
int main(void)
{
//----- RCC - включение тактирования -----
RCC->AHBENR|=RCC_AHBENR_GPIOBEN;
// clock portB enable;
RCC->APB1ENR|= RCC_APB1ENR_TIM7EN;    // clock TIM7 enable;
//----- I/O configuration -----
GPIOB->MODER|=  GPIO_MODER_MODER6_0;
GPIOB->OTYPER&=  ~GPIO_OTYPER_OT_6;
GPIOB->PUPDR&=  ~GPIO_PUPDR_PUPDR6;
GPIOB->OSPEEDR|=  GPIO_OSPEEDER_OSPEEDR6;
//----------------------------------------------
NVIC_SetPriority(TIM7_IRQn,1);
NVIC_EnableIRQ(TIM7_IRQn);
TIM7-> DIER|= TIM_DIER_UIE;	  // interrupt enable
TIM7-> PSC= 0xffff;	    // prescaler
TIM7-> ARR =  0x000f;
TIM7-> CR1|= TIM_CR1_CEN;	  // TIM7 enable
//--------------------------------------------------------------------------
int delay=0;
while(1)
{
 delay++;	 // просто так....
}
}
void TIM7_IRQHandler(void)
{
TIM7->SR &= ~TIM_SR_UIF;
//Сбрасываем бит вызова прерывания.
if (i == 0)  //Проверяем текущее состояние светодиода
{GPIOB->BSRRL |= GPIO_BSRR_BS_6;} 
//Зажигаем светодиод
else
{GPIOB->BSRRH |= GPIO_BSRR_BS_6;} 
//Или гасим светодиод
i = ~i;
}

Все работает... я не могу понять почему в пошаговом режиме не попадаю в обработчик прерывания. Если, к примеру, поставлю breakpoint в обработчик прерывания и нажму RUN(F5) то попадаю, если пошагово F11 - не попадаю....

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

Если, к примеру, поставлю breakpoint в обработчик прерывания и нажму RUN(F5) то попадаю
В режиме отладки программа туда никогда не попадает...
Нет слов... :wall:Обожрутся мухоморов, потом выразиться нормально не могут...

Ещё и минусуете ответы на свои глупые вопросы. Какой вопрос, такие и ответы.

В первую очередь, научитесь нормально задавать вопросы, тогда, в большинстве случаев, сами будете находить на них ответы.

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

Потому что шаг - переход с одной строки кода на другую. Иногда с заходом в функцию, если стоИт вызов функции на текущей строке.

Как Вы собрались шагами дошагать до обработчика, совершенно не понятно...

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

Потому что шаг - переход с одной строки кода на другую. Иногда с заходом в функцию, если стоИт вызов функции на текущей строке.

Как Вы собрались шагами дошагать до обработчика, совершенно не понятно...

Видимо мы друг друга не понимаем....

Запускаю режим отладки и начинаю шагать - верно? Дошагиваю я до бесконечного цикла while - верно? И начинаю там крутиться, но не бесконечно - верно? Т.к. в какой то момент программа перейдет в обработчик прерывания - верно? Переполниться счетчик таймера, установиться флаг и я должен попасть в подпрограмму прерывания - так?

Ну так почему же я нажимая на "волшебную" кнопочку F11 туда не попадаю???? - вот в чем вопрос ребята...

Ну так почему при пошаговом не попадаю?

а брекпоинт в прерывание поставить никак?

По этому поводу я уже писал. Ставлю брэйк - попадаю...

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

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

Ещё раз говорю, шаг - это переход на следующую строку. И пофиг чё там между строками происходит.

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

И что, что в режиме отладки ? Там много чего мимо проходит. Когда Вы делаете шаг, ставится брекпоинт на следующую строку и запускается run. Пофигу чего там между шагами.

Иначе Вы бы по каждой АСМовской строке шагали.

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

А как мне тогда поймать момент вызова прерывания?

(С аврками баловался в студии на ассемблере, там есть симулятор, в нем все как помаслу - переполнился таймер, встали флаги, пошли в прерывание... все в пошаговом работало...)

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...